lOMoARcPSD| 60729183
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
HỌC PHẦN: CÔNG NGHỆ ĐA PHƯƠNG TIỆN
NHÓM ĐỀ TÀI: 2. HÌNH ẢNH VÀ KỸ THUẬT XỬ LÝ HÌNH ẢNH
Đề tài: 2.49: Kỹ thuật nén ảnh JPEG
Sinh viên thực hiện
Lớp
Khóa
Vũ Văn Huy
DCCNTT13.10.14
K13
Nguyễn Hữu Thành Long
DCCNTT13.10.14
K13
Hoàng Tô Thành
DCCNTT13.10.14
K13
Hoàng Nguyễn Tuấn
DCCNTT13.10.14
K13
lOMoARcPSD| 60729183
MỤC LỤC
Contents
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI ...........................................................................
5
1.1 Giới thiệu về JPEG. ...................................................................................................
5
1.1.1 JPEG là gì? .....................................................................................................................
5
1.1.2 Phương pháp nén ảnh JPEG là gì? .................................................................................
5
1.2 Lý do chọn ề tài. ...................................................................................................... 6
1.3 Ưu và nhược iểm của phương pháp nén ảnh JPEG. ................................................ 6
1.3.1 Ưu iểm. ........................................................................................................................ 6
1.3.2 Nhược iểm. ................................................................................................................... 7
CHƯƠNG 2. GIỚI THIỆU VỀ CÔNG CỤ PYTHON .......................................................
8
2.1 Giới thiệu về ngôn ngữ lập trình Python. ..................................................................
8
2.1.1 Python là gì? ................................................................................................................ 8
2.1.2 Python mang lại những lợi ích gì? .................................................................................
8
2.2 Ứng dụng Python trong xử lý hình ảnh. ....................................................................
9
2.2.1 Xử lý ảnh hình thái học (Morphological Image Processing). ........................................
9
2.2.2 Xử lý hình ảnh Gaussian. ...............................................................................................
9
2.2.3 Fourier Transform trong xử lý ảnh. ............................................................................. 10
2.2.4 Phát hiện cảnh trong xử lý. .......................................................................................... 12
2.2.5 Xử lý hình ảnh Wavelet. .............................................................................................. 13
2.3 Các thư viện xử lý ảnh. ............................................................................................
14
2.3.1 OpenCV. ...................................................................................................................... 14
lOMoARcPSD| 60729183
2.3.2 Hình ảnh Scikit. ........................................................................................................... 14
2.3.3 PIL/PILLOW. .............................................................................................................. 15
2.3.4 NumPy. ........................................................................................................................ 16
2.3.5 Mahotas. .......................................................................................................................
17
CHƯƠNG 3. CÀI ĐẶT .....................................................................................................
18
Module 1: ...........................................................................................................................
18
Kết luận ..............................................................................................................................
21
DANH MỤC SÁCH THAM KHẢO ................................................................................
23
lOMoARcPSD| 60729183
LỜI MỞ ĐẦU
Hiện nay, mạng Internet nói riêng những thành tựu trong lĩnh vực công nghệ
thông tin truyền thông nói chung ã ang tiếp tục mrộng phát triển nhanh chóng,
ạt ược những dấu mốc quan trọng. Song hành cùng với sự phát triển ó, những khái
niệm, những quy chuẩn, những ối tượng tài nguyên mới cũng ược ra ời nhằm phục
vụ tốt nhất cho nhu cầu của con người. Hơn nữa, ó cũng chính là những thành công
mới của loài người trong công cuộc khai phá tri thức.
Khi nhắc tới ngành công nghệ thông tin truyền thông ặc biệt thế giới ảo
trên mạng toàn cầu rộng lớn, chúng ta sẽ phải nhắc ngay ến khái niệm Công nghệ a
phương tiện lĩnh vực ứng dụng công nghệ thông tin thiết kế sáng tạo các
ứng dụng a phương tiện trong nhiều lĩnh vực khác nhau. Các ứng dụng a phương
tiện có thể bao gồm n bản, âm thanh, hình ảnh, video,họa và tương tác kỹ thuật
số. Khái niệm về Công nghệ a phương tiện rất phong phú, nhưng có thể nêu ra một
số ví dụ về các sản phẩm, dịch vụ a phương tiện là:
Các trang web, ứng dụng di ộng, trò chơi iện tử, ứng dụng thực tế ảo
thực tế tăng cường.
Các phim hoạt hình, phim iện ảnh, chương trình truyền hình, video quảng
cáo, kỹ xảo hình ảnh và âm thanh.
Các ấn phẩm họa, bao bì, logo, biểu tượng, poster, banner, brochure,
catalogue, sách iện tử.
Các ứng dụng giáo dục, y học, nghiên cứu khoa học, an ninh, quân sự,...
Việc tìm hiểu, khảo sát về các ối tượng công nghệ a phương tiện òi hỏi công sức
chi phí rất lớn. Trong phạm vi của một bài tiểu luận học phần, nhóm xin ưa ra
những cái nhìn cụ thể, ràng về một ối tượng trong số ó: Kỹ thuật nén ảnh JPEG
và các vấn bản liên quan. Đây là một chuẩn kỹ thuật ược sử dụng phổ biến
hiện nay, cả trong ời sống lẫn công tác nghiên cứu khoa học.
lOMoARcPSD| 60729183
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về JPEG.
1.1.1 JPEG là gì?
- JPEG viết tắt của Joint Photographic Experts Group một trong những
phương pháp nén ảnh phổ biến. Trong khi ó ịnh dạng JPEG một ịnh dạng hình
ảnh 16 bit giúp hiển thị hàng triệu màu sắc khác nhau. Chúng có thể kết hợp c ánh
xác ỏ, xanh lá, xanh dương hiển thmàu sắc sống ộng tạo nên sự thân thiện với
hình ảnh hiển thị. Nhờ những ặc tính này JPEG trở thành một trong những ịnh
dạng hình ảnh tiêu chuẩn cho máy ảnh, iện thoại và các thiết bị kỹ thuật số hiện tại.
1.1.2 Phương pháp nén ảnh JPEG là gì?
- Phương pháp nén ảnh JPEG phương pháp nén Lossy hay còn gọi nén
mất mát dữ liệu. Người dùng có thể cài ặt các chế ộ nén linh hoạt từ nén 0% ến nén
100%. Tuy vậy trong thực tế rất ít khi người ta sử dụng phương pháp nén tối a 0%
mà thường nén mức 55%->70%. Lựa chọn tỉ lệ nén này cho ịnh dạng JPEG cho
phép bức ảnh vừa có ộ nét cao vừa giảm dung lượng tốt nhất.
- Phương pháp nén ảnh theo thuẩn JPEG có thể cho hệ số nén tới 80:1 hay lớn
hơn, nhưng bạn phải chịu mất thông tin (ảnh sau khi bung nén khác với ảnh ban ầu),
lượng thông tin mất mát tăng dần theo hệ số nén. Tuy nhiên sự mất mát thông tin
này không bị làm một cách cẩu thả. JPEG tiến hành sửa ổi thông tin ảnh khi nén sao
cho ảnh mới gần giống như ảnh cũ, khiến phần ông mọi người không nhận thấy sự
khác biệt. Và bạn hoàn toàn có thể quản lý sự mất mát này bằng cách hạn chế hệ số
nén. Như thế người ng thể cân nhắc giữa cái lợi của việc tiết kiệm bộ nhớ
mức ộ mất thông tin của ảnh, ể chọn phương án thích hợp.
- Phương pháp nén nh JPEG dựa trên nguyên sau: Ảnh màu trong không
gian của 3 màu RGB (red Green Blue) ược biến ổi về hệ YUV (hay YCBCr) ( iều
này không phải là nhất thiết, nhưng nếu thực hiện thì cho kết quả nén cao hơn). Hệ
YUV kết quả nghiên cứu của các nhà sản xuất tuyến truyền hình hệ Pal, Secam
NTSC, nhận thấy tín hiệu video thể phân ra 3 thành phần Y, U, V (cũng như
phân theo u chuẩn , xanh lá cây xanh da trời). Và một iều thú vụ hệ nhãn
thị của con người rất nhạy cảm với thành phần Y kém nhạy cảm với hai loại U
lOMoARcPSD| 60729183
và V. Phương pháp JPEG ã nắm bắt phát hiện này tách những thông tin thừa của
ảnh. Hệ thống nén thành phần Y của ảnh với mức ộ ít hơn so với U, V, bởi người ta
ít nhận thấy sự thay ổi của U và V so với Y.
1.2 Lý do chọn ề tài.
- Phổ biến và quan trọng: JPEG là một trong những ịnh dạng ảnh nén phổ biến
nhất và ược sử dụng rộng rãi trên internet, trong ngành quảng cáo, thiết kế ồ họa và
nhiếu ng dụng khác. Nghiên cứu về ịnh dạng nén JPEG sẽ giúp sinh viên hiểu
về quá trình nén ảnh và ứng dụng thực tế của nó.
- Tính tương thích: JPEG là một ịnh dạng ảnh tương thích với hầu hết các thiết
bị và phần mềm xảnh, giúp dễ dàng chia sẻ và sử dụng ảnh trên nhiều nền tảng
khác nhau. Nghiên cứu về cách nén ảnh theo chuẩn JPEG sẽ giúp sinh viên hiểu về
tính tương thích và ứng dụng của ịnh dạng này trong thực tế.
- Hiệu suất chất lượng: JPEG sử dụng kỹ thuật nén mất mát giảm kích
thước tệp mà vẫn giữ ược chất lượng ảnh tốt ối với nhiều ứng dụng. Nghiên cứu về
việc nén ảnh theo chuẩn JPEG sẽ giúp sinh viên hiểu về cách tối ưu hiệu suất
cht lượng trong việc lưu trữ và chia sẻ ảnh.
- Ứng dụng thực tế: Việc làm bài tập lớn với ề tài nén ảnh theo chuẩn JPEG có
thể giúp sinh viên áp dụng kiến thức về lý thuyết nén ảnh vào thực tế, từ việc xử
ảnh số, ến việc lưu trữ và chia sẻ ảnh trên các nền tảng trực tuyến..
Việc chọn tài nén ảnh theo chuẩn JPEG làm bài tập lớn sẽ giúp sinh viên hiểu
về tính tương thích, hiệu suất ứng dụng thực tế của ịnh dạng nén ảnh này, ồng
thời cung cấp cơ hội áp dụng kiến thức lý thuyết vào thực tế.
1.3 Ưu và nhược iểm của phương pháp nén ảnh JPEG.
1.3.1 Ưu iểm.
- Định dạng ảnh JPEG có rất nhiều ưu iểm vượt trội so với các ịnh dạng
khác. Sử dụng công nghệ nén tiên tiến cho phép hình ảnh hiển thị ầy ủ màu sắc
hơn với 16 triệu màu. nghĩa rằng bức nh sẽ trở nên sống ộng thân
thiện hơn khi chúng cần thể hiện một lượng màu lớn.
- Công nghệ nén linh hoạt cho phép bức ảnh giảm dung lượng vài lần
ến vài
lOMoARcPSD| 60729183
chục lần. Chất ợng của bức ảnh vẫn giảm dần theo hệ số nén. Tuy vậy một chừng
mực nào ó JPEG cho chất lượng ảnh tốt với dung lượng ảnh rất nhỏ. Tính năng này
ặc biệt hữu ích khi chúng ược ăng tải n web, giảm dung lượng lưu trữ và cải thiện
tốc ộ load trang.
1.3.2 Nhược iểm.
- JPEG công nghệ n tiên tiến thế nhưng chúng tồn tại 2 nhược iểm chưa
thể khắc phục bao gồm: Tạo ra các vùng mờ, không giữ ược trong suốt của ảnh.
Theo ó, trong quá trình nén ảnh bức ảnh sẽ xuất hiện các iểm mgiữa các mảng
màu. Ngoài ra khi bạn thực hiện nén ảnh, bức ảnh của bạn không thể khôi phục lại
chất lượng ảnh gốc của bức ảnh. Các vùng màu của jpeg bị giảm sắc nét thể
nhìn thấy rõ khi tăng hệ số nén.
- Đặc biệt ịnh dạng ảnh JPEG không thể tạo ra những bức ảnh có ộ trong suốt
và ảnh ộng. Điều này ồng nghĩa với việc những bức ảnh ược cắt ra (không có nền)
sẽ bị thay bằng một nền màu sắc. Những bức ảnh ộng của bạn khi tạo ra bởi các
phần mềm sẽ chuyển thành ảnh tĩnh mặc dù trong phần mềm nó là ảnh ộng. Khi bạn
muốn tạo ra các bức nh trong suốt hoặc ảnh ộng buộc bạn phải sử dụng các
ịnh dạng ảnh khác.
CHƯƠNG 2. GIỚI THIỆU VỀ PYTHON
2.1 Giới thiệu về ngôn ngữ lập trình Python.
2.1.1 Python là gì?
- Python ngôn ngữ lập trình máy tính bậc cao thường ược sử dụng xây
dựng trang web và phần mềm, tự ộng hóa các tác vụ và tiến hành phân tích dữ liệu.
Python ngôn ngữ mục ích chung, nghĩa thể ược sử dụng tạo nhiều
chương trình khác nhau và không chuyên biệt cho bất kỳ vấn ề cụ thể nào.
2.1.2 Python mang lại những lợi ích gì?
- Những lợi ích của Python bao gồm:
Các nhà phát triển thể dễ dàng ọc hiểu một chương trình Python
ngôn ngữ này có cú pháp cơ bản giống tiếng Anh.
lOMoARcPSD| 60729183
Python giúp cải thiện năng suất làm việc của các nhà phát triển so với
những ngôn ngữ khác, họ thể sử dụng ít dòng hơn viết một chương
trình Python.
Python một thư viện tiêu chuẩn lớn, chứa nhiều dòng thể tái sử
dụng cho hầu hết mọi tác vụ. Nhờ ó, các nhà phát triển sẽ không cần phải
viết mã từ ầu.
Các nhà phát triển thể dễ dàng sử dụng Python với các ngôn ngữ lập
trình phổ biến khác như Java, C và C++.
Cộng ồng Python tích cực hoạt ộng bao gồm ng triệu nhà phát triển nhiệt
tình hỗ trợ trên toàn thế giới. Nếu gặp phải vấn ề, bạn sẽ có thể nhận ược
sự hỗ trợ nhanh chóng từ cộng ồng.
Trên Internet rất nhiều tài nguyên hữu ích nếu bạn muốn học Python.
dụ: bạn thể dễ dàng tìm thấy video, chỉ dẫn, tài liệu hướng dẫn
dành cho nhà phát triển.
Python thược sử dụng trên nhiều hệ iều hành máy tính khác nhau,
chẳng hạn như Windows, macOS, Linux và Unix.
2.2 Ứng dụng Python trong xử lý hình ảnh.
2.2.1 Xử lý ảnh hình thái học (Morphological Image Processing).
- Morphological Image Processing gồm các phép toán phi tuyến tính (non-
linear) tác ộng ến hình dạng hoặc hình thái của ảnh nhị phân. Thuật toán này loại bỏ
các iểm nhiễu và làm mịn hình ảnh.
- Xửhình thái học cũng có thể ược mở rộng cho hình ảnh thang ộ xám.
bao gồm những thao tác phi tuyến tính liên quan ến cấu trúc của các vtrí trong ảnh,
phụ thuộc vào thứ tự pixel. Kỹ thuật này phân tích một hình nh bằng cách sử dụng
phần tử cấu trúc (structuring element) ặt ở những vị trí khác nhau trong hình ảnh và
ược so sánh với các pixel lân cận tương ứng. Phần tử cấu trúc một ma trận nhỏ
với các giá trị 0 và 1.
lOMoARcPSD| 60729183
- Hai thao tácbản của quá trình xử lý hình thái học là Dilation (phép giãn)
và Erosion (phép co):
Phép giãn thêm pixel vào ranh giới của ối tượng trong một hình ảnh
Phép co loại bỏ các pixel khỏi ranh giới ối tượng.
- Số lượng pixel ược xóa hoặc thêm vào hình ảnh gốc phụ thuộc vào kích thước
của phần tử cấu trúc.
2.2.2 Xử lý hình ảnh Gaussian.
- Gaussian blur (làm mờ/mịn Gaussian) kết quả của việc làm mờ hình ảnh
bởi một hàm Gaussian.
- Kỹ thuật này ược sử dụng giảm nhiễu ảnh các chi tiết. Hiệu ứng hình
ảnh của kỹ thuật Gaussian tương tự như việc nhìn một hình ảnh qua màn hình mờ.
Trong thị giác máy tính, Gaussian ược sử dụng ể tăng cường hình ảnh ở các quy mô
khác nhau hoặc như một kỹ thuật tăng cường dữ liệu trong học sâu.
- Hàm gaussian cơ bản ược biểu diễn như sau:
- Trong thực tế, thể tận dụng ặc tính thể phân tách của Gaussian blur
chia quá trình thành 2 lần. Lần ầu tiên, kernel một chiều (nhân hệ iều hành) ược sử
dụng làm mờ hình ảnh chỉ theo hướng ngang hoặc dọc. Lần thứ hai, kernel một
chiều tương tự ược dùng ể làm mờ theo hướng còn lại. Kết quả thu ược là kernel hai
chiều. Dưới ây là một ví dụ trực quan hiểu tác ộng của bộ lọc Gaussian ối với nh
ảnh.
lOMoARcPSD| 60729183
- thể thấy, Gaussian filter bộ lọc thông thấp, tức làm suy yếu các tần
số cao. Nó thường ược sử dụng trong phát hiện cạnh.
2.2.3 Fourier Transform trong xử lý ảnh.
- Phép biến ổi Fourier chia hình ảnh thành các thành phần sin và cosin. Nó có
nhiều ứng dụng như tái tạo hình ảnh, nén hình ảnh hoặc lọc hình ảnh.
- Một hình sin bao gồm ba yếu tố:
Độ lớn – liên quan ến ộ tương phản.
Tần số không gian – liên quan ến ộ sáng.
Pha – liên quan ến thông tin màu.
- Hình ảnh trong miền tần số biểu thị như sau:
lOMoARcPSD| 60729183
- Công thức cho phép biến ổi fourier rời rạc 2D là:
Trong công thức trên, f (x, y) biểu thị hình ảnh.
- Phép biến ổi fourier nghịch ảo chuyển phép biến ổi trở lại hình ảnh. Công
thức cho phép biến ổi fourier rời rạc nghịch ảo 2D là:
2.2.4 Phát hiện cảnh trong xử lý.
- Phát hiện cạnh một kthuật xử hình ảnh ể tìm ranh giới của các ối ợng
trong hình ảnh. hoạt ộng bằng cách phát hiện những iểm không liên tục về
sáng. Thuật toán này có thể nhanh chóng phản ứng nếu phát hiện một số nhiễu trong
lOMoARcPSD| 60729183
ảnh ồng thời phát hiện các biến thể của mức xám. Các cạnh ược ịnh nghĩa là cực ại
cục bộ của gradient.
- Thuật toán phát hiện cạnh phổ biến nhất thuật toán phát hiện cạnh sobel.
Toán tử phát hiện Sobel ược tạo thành từ các hạt nhân chập 3*3. Một kernel ơn giản
Gx một kernel xoay 90 Gy. Các phép o riêng biệt ược thực hiện bằng cách áp
dụng cả hai kernel riêng biệt vào hình ảnh.
*biểu thị phép toán tích chập xử lý tín hiệu 2D.
Gradient kết quả có thể ược tính như sau:
2.2.5 Xử lý hình ảnh Wavelet.
lOMoARcPSD| 60729183
- Phép biến ổi Fourier chỉ giới hạn tần số, trong khi ó Wavelet xem xét cả
thời gian và tần suất. Biến ổi này phù hợp với các tín hiệu không cố ịnh.
- Cạnh một trong những phần quan trọng của hình ảnh, tuy nhiên, khi áp
dụng các bộ lọc truyền thống, nhiễu ược loại bỏ nhưng hình ảnh bị mờ. Biến ổi
Wavelet ược thiết kế ể có ược ộ phân giải tần số tốt cho các thành phần tần số thấp.
Dưới ây là ví dụ về biến ổi wavelet 2D.
2.3 Các thư viện xử lý ảnh.
2.3.1 OpenCV.
- OpenCV là viết tắt của Open Source Computer Vision Library. Thư viện này
bao gồm khoảng hơn 2000 thuật toán ược tối ưu hóa hữu ích cho thị giác máy tính
và học máy. một số cách bạn thể sử dụng OpenCV trong xử hình ảnh như
sau:
Chuyển ổi hình ảnh từ không gian màu này sang không gian màu khác,
chẳng hạn như giữa BGR và HSV, BGR và màu xám, v.v.
lOMoARcPSD| 60729183
Thực hiện ngưỡng trên hình ảnh, như, ngưỡng ơn giản, ngưỡng thích ứng,
v.v.
Làm mịn hình ảnh, như, áp dụng c bộ lọc tùy chỉnh cho hình ảnh và làm
mờ hình ảnh.
Thực hiện các phép toán hình thái trên ảnh.
Xây dựng hình kim tự tháp.
Trích xuất tiền cảnh từ hình ảnh bằng thuật toán GrabCut.
Phân oạn ảnh sử dụng thuật toán watershed.
2.3.2 Hình ảnh Scikit.
- Scikit một thư viện nguồn mở ược sử dụng tiền xử hình ảnh.
sử dụng học máy với các chức năng tích hợp và có thể thực hiện các hoạt ộng phức
tạp trên hình ảnh chỉ với một vài chức năng.
- Scikit hoạt ộng với các mảng numpy và là một thư viện khá ơn giản ngay cả
ối với những người mới làm quen với python. Một số thao tác có thể ược thực hiện
bằng hình ảnh scikit là:
Để triển khai các hoạt ộng tạo ngưỡng, hãy sử dụng phương thức
try_all_threshold () trên hình ảnh. sẽ sử dụng bảy thuật toán ngưỡng
toàn cầu. Đây là trong mô un bộ lọc.
Để thực hiện phát hiện cạnh, hãy sử dụng phương thức sobel () trong
un bộ lọc. Phương pháp này yêu cầu hình ảnh thang ộ xám 2D làm
ầu vào, vì vậy chúng ta cần chuyển ổi hình ảnh sang thang ộ xám.
Để thực hiện làm mịn gaussian, hãy sử dụng phương thức gaussian () trong
-un bộ lọc.
Để áp dụng cân bằng biểu ồ, hãy sử dụng mô-un phơi sáng.
Để áp dụng cân bằng biểu bình thường cho hình ảnh gốc, hãy sử dụng
phương thức equalize_hist ().
lOMoARcPSD| 60729183
Để áp dụng cân bằng thích ứng, hãy sử dụng phương thức
equalize_adapthist ().
Để xoay hình ảnh, hãy sử dụng hàm xoay () trong mô un biến ổi.
Để thay ổi tỷ lệ hình ảnh, hãy sử dụng hàm rescale () từ mô-un biến ổi.
Để áp dụng các phép toán hình thái, hãy sử dụng hàm binary_e wear () và
binary_dilation () trong mô-un hình thái học.
2.3.3 PIL/PILLOW.
- PIL viết tắt của Python Image Library. Đây một trong những thư viện
mạnh mẽ, hỗ trợ một loạt các ịnh dạng hình ảnh như PPM, JPEG, TIFF, GIF, PNG
và BMP.
- Nó có thể giúp bạn thực hiện một số thao tác trên hình ảnh như xoay, thay ổi
kích thước, cắt xén, chia tỷ lệ màu xám, v.v. Hãy xem qua một số thao tác ó:
Để tải một hình ảnh, hãy sử dụng phương thức open ().
Để hiển thị một hình ảnh, hãy sử dụng phương thức show ().
Để biết ịnh dạng tệp, hãy sử dụng thuộc tính format.
Để biết kích thước của hình ảnh, hãy sử dụng thuộc tính size.
Để biết về thuộc tính chế ộ sử dụng ịnh dạng pixel.
Để lưu tệp hình ảnh sau khi xử lý, hãy sử dụng phương thức save (). Pillow
lưu tệp hình ảnh ở ịnh dạng png.
Để thay ổi kích thước hình ảnh, hãy sử dụng phương thức resize () nhận
hai ối số là chiều rộng và chiều cao.
Để cắt hình ảnh, hãy sử dụng phương thức crop () lấy một ối số dưới dạng
một bộ hộp xác ịnh vị trí và kích thước của vùng ược cắt.
Để xoay hình ảnh, hãy sử dụng phương thức xoay () nhận một ối số số
nguyên hoặc số thực thể hiện mức ộ xoay.
lOMoARcPSD| 60729183
Để lật hình ảnh, hãy sử dụng phương thức biến ổi () lấy một ối số trong số
các ối số sau: o Image.FLIP_LEFT_RIGHT. o
Image.FLIP_TOP_BOTTOM,Image.ROTATE_90.
o Image.ROTATE_180, Image.ROTATE_270.
2.3.4 NumPy.
- Với thư viện này, bạn cũng thể thực hiện các kỹ thuật hình ảnh ơn giản,
chẳng hạn như lật hình ảnh, trích xuất các tính năng và phân tích chúng.
- Hình ảnh có thể ược biểu diễn bằng các mảng a chiều do ó kiểu của chúng
NdArrays. Hình nh màu một mảng 3 chiều. Bằng cách cắt mảng a chiều,
các kênh RGB có thể ược tách ra.
- Dưới ây một số thao tác thể ược thực hiện bằng NumPy trên nh ảnh
(hình ảnh ược tải trong một biến có tên test_img bằng cách sử dụng imread).
Để lật hình ảnh theo hướng dọc, hãy sử dụng np.flipud (test_img).
Để lật hình ảnh theo hướng ngang, hãy sử dụng np.fliplr (test_img).
Để ảo ngược hình ảnh, hãy sử dụng test_img [:: – 1] (hình ảnh sau khi lưu
trữ dưới dạng mảng numpy ược ặt tên là <img_name>).
Để thêm bộ lọc vào hình ảnh, bạn có thể làm như sau:
o dụ: np.where (test_img > 150, 255, 0), tức trong hình này nếu tìm
thấy bất kỳ thứ bằng 150, thì hãy thay thế bằng 255, nếu không
thì 0.
- Bạn cũng thể hiển thị các kênh RGB riêng biệt. Nó thể ược thực hiện
bằng cách sử dụng oạn mã này:
Để có ược kênh màu ỏ, hãy thực hiện test_img [:,:, 0], ể có ược kênh màu
xanh cây, hãy thực hiện test_img [:,:, 1] ược kênh màu xanh lam,
hãy thực hiện test_img [:,:, 2].
2.3.5 Mahotas.
lOMoARcPSD| 60729183
- Đây là một thư viện xử lý hình ảnh và thị giác máy tính và hơn 100 chức
năng. Nhiều thuật toán của ược thực hiện bằng C++. Bản thân Mahotas một
-un ộc lập, tức là nó có phụ thuộc tối thiểu.
- Hiện tại, Mahotas chỉ phụ thuộc vào trình biên dịch C++ tính toán số, không
cần mô-un NumPy, trình biên dịch thực hiện tất cả công việc của nó.
lOMoARcPSD| 60729183
CHƯƠNG 3. CÀI ĐẶT
Module 1:
from PIL import Image
def compress_image(input_image_path,
output_image_path, quality=75): try:
# Mở ảnh with
Image.open(input_image_path) as img:
# Nén nh và lưu li vi cht lưng ã chỉ ịnh
img.save(output_image_path, quality=quality)
print(f"Đã nén và lưu nh thành công:
{output_image_path}")
except Exception as e:
print(f"Li: {e}") # Đưng dn
ến nh bn mun nén input_image
= "anhnen1.jpg"
# Đưng dn và tên ca nh sau khi nén
output_image = "anhdanen1.jpg"
compress_image(input_image, output_image)
Đoạn code Python này sử dụng thư viện Pillow (PIL) nén một hình ảnh ầu vào
tại một mức ộ chất lượng nhất ịnh và lưu ảnh ã nén ra một tệp khác.
From PIL import Image: Dòng này import class Image từ thư viện Pillow làm
việc với hình ảnh.
Hàm compress_image nhận các ối số ầu vào sau:
Input_image_path: Đường dẫn của hình ảnh ầu vào cần nén.
Output_image_path: Đường dẫn và tên tệp sẽ lưu ảnh ã nén.
Quality=20: Tham số tùy chọn chịnh mức chất lượng của ảnh sau khi nén.
Giá trị mặc ịnh là 20 nếu không ược chỉ ịnh.
Khối try-except: Code ược bọc trong một khối try-except ể bắt lỗi trong quá trình
xử lý ảnh. Nếu có lỗi xảy ra, nó sẽ ược bắt và in ra thông báo lỗi cụ thể.
Trong khối try:
lOMoARcPSD| 60729183
With Image.open(input_image_path) as img:: Sử dụng Image.open() mở
hình ảnh từ ường dẫn ầu vào gán vào biến img. with statement ảm
bảo rằng tài nguyên hình ảnh ược óng tự ng sau khi hoàn thành việc làm
việc với ảnh.
Img.save(output_image_path, quality=quality): Hàm save() ược sử dụng
lưu ảnh ã mở vào ường dẫn tên tệp ược chỉ ịnh trong output_image_path.
Tham số quality ược sdụng chỉ ịnh mức nén/chất lượng của ảnh sau
khi lưu. Trong trường hợp này, giá trị này ược truyền từ tham số quality của
hàm compress_image.
Printf("Đã nén lưu ảnh thành công: {output_image_path}"): Thông báo
in ra nếu quá trình nén và lưu ảnh thành công.
Trong khối except: Nếu lỗi xảy ra trong qtrình xử ảnh, thông báo lỗi cụ
thể sẽ ược in ra.
Đoạn code này thực hiện việc nén hình ảnh theo mức chất lượng ược chỉ ịnh
(thông qua tham số quality), giúp giảm kích thước tệp ảnh với mức ộ mất mát chất
lượng nhất ịnh. Trong trường hợp này, chất lượng ảnh sau khi nén ược thiết lập
75 ( ược truyền qua hàm compress_image). Giá trị càng cao thì chất ợng ảnh
càng tốt, nhưng tệp tin có thể càng lớn.
Kết quả.
lOMoARcPSD| 60729183
Ảnh gốc
Size ảnh gốc
Ảnh ã nén
Size ảnh ã nén
Kết luận
Kết quả ạt ược.
- Kỹ thuật nén ảnh JPEG một tiêu chuẩn nén ảnh phổ biến, ược áp dụng
trong nhiều lĩnh vực như lưu trữ ảnh, fax màu, camera số, v.v. Kết quả ạt ược trong
kỹ thuật nén ảnh JPEG là:

Preview text:

lOMoAR cPSD| 60729183
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN
HỌC PHẦN: CÔNG NGHỆ ĐA PHƯƠNG TIỆN
NHÓM ĐỀ TÀI: 2. HÌNH ẢNH VÀ KỸ THUẬT XỬ LÝ HÌNH ẢNH
Đề tài: 2.49: Kỹ thuật nén ảnh JPEG
Sinh viên thực hiện Lớp Khóa Vũ Văn Huy DCCNTT13.10.14 K13
Nguyễn Hữu Thành Long DCCNTT13.10.14 K13 Hoàng Tô Thành DCCNTT13.10.14 K13
Hoàng Nguyễn Tuấn DCCNTT13.10.14 K13 lOMoAR cPSD| 60729183 MỤC LỤC Contents
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI ........................................................................... 5
1.1 Giới thiệu về JPEG. ................................................................................................... 5
1.1.1 JPEG là gì? ..................................................................................................................... 5
1.1.2 Phương pháp nén ảnh JPEG là gì? ................................................................................. 5
1.2 Lý do chọn ề tài. ...................................................................................................... 6
1.3 Ưu và nhược iểm của phương pháp nén ảnh JPEG. ................................................ 6
1.3.1 Ưu iểm. ........................................................................................................................ 6
1.3.2 Nhược iểm. ................................................................................................................... 7
CHƯƠNG 2. GIỚI THIỆU VỀ CÔNG CỤ PYTHON ....................................................... 8
2.1 Giới thiệu về ngôn ngữ lập trình Python. .................................................................. 8
2.1.1 Python là gì? ................................................................................................................ 8
2.1.2 Python mang lại những lợi ích gì? ................................................................................. 8
2.2 Ứng dụng Python trong xử lý hình ảnh. .................................................................... 9
2.2.1 Xử lý ảnh hình thái học (Morphological Image Processing). ........................................ 9
2.2.2 Xử lý hình ảnh Gaussian. ............................................................................................... 9
2.2.3 Fourier Transform trong xử lý ảnh. ............................................................................. 10
2.2.4 Phát hiện cảnh trong xử lý. .......................................................................................... 12
2.2.5 Xử lý hình ảnh Wavelet. .............................................................................................. 13
2.3 Các thư viện xử lý ảnh. ............................................................................................ 14
2.3.1 OpenCV. ...................................................................................................................... 14 lOMoAR cPSD| 60729183
2.3.2 Hình ảnh Scikit. ........................................................................................................... 14
2.3.3 PIL/PILLOW. .............................................................................................................. 15
2.3.4 NumPy. ........................................................................................................................ 16
2.3.5 Mahotas. ....................................................................................................................... 17
CHƯƠNG 3. CÀI ĐẶT ..................................................................................................... 18
Module 1: ........................................................................................................................... 18
Kết luận .............................................................................................................................. 21
DANH MỤC SÁCH THAM KHẢO ................................................................................ 23 lOMoAR cPSD| 60729183 LỜI MỞ ĐẦU
Hiện nay, mạng Internet nói riêng và những thành tựu trong lĩnh vực công nghệ
thông tin – truyền thông nói chung ã và ang tiếp tục mở rộng phát triển nhanh chóng,
ạt ược những dấu mốc quan trọng. Song hành cùng với sự phát triển ó, những khái
niệm, những quy chuẩn, những ối tượng tài nguyên mới cũng ược ra ời nhằm phục
vụ tốt nhất cho nhu cầu của con người. Hơn nữa, ó cũng chính là những thành công
mới của loài người trong công cuộc khai phá tri thức.
Khi nhắc tới ngành công nghệ thông tin – truyền thông và ặc biệt là thế giới ảo
trên mạng toàn cầu rộng lớn, chúng ta sẽ phải nhắc ngay ến khái niệm Công nghệ a
phương tiện – là lĩnh vực ứng dụng công nghệ thông tin ể thiết kế và sáng tạo các
ứng dụng a phương tiện trong nhiều lĩnh vực khác nhau. Các ứng dụng a phương
tiện có thể bao gồm văn bản, âm thanh, hình ảnh, video, ồ họa và tương tác kỹ thuật
số. Khái niệm về Công nghệ a phương tiện rất phong phú, nhưng có thể nêu ra một
số ví dụ về các sản phẩm, dịch vụ a phương tiện là:
• Các trang web, ứng dụng di ộng, trò chơi iện tử, ứng dụng thực tế ảo và thực tế tăng cường.
• Các phim hoạt hình, phim iện ảnh, chương trình truyền hình, video quảng
cáo, kỹ xảo hình ảnh và âm thanh.
• Các ấn phẩm ồ họa, bao bì, logo, biểu tượng, poster, banner, brochure, catalogue, sách iện tử.
• Các ứng dụng giáo dục, y học, nghiên cứu khoa học, an ninh, quân sự,...
Việc tìm hiểu, khảo sát về các ối tượng công nghệ a phương tiện òi hỏi công sức
và chi phí rất lớn. Trong phạm vi của một bài tiểu luận học phần, nhóm xin ưa ra
những cái nhìn cụ thể, rõ ràng về một ối tượng trong số ó: Kỹ thuật nén ảnh JPEG
và các vấn ề cơ bản có liên quan. Đây là một chuẩn kỹ thuật ược sử dụng phổ biến
hiện nay, cả trong ời sống lẫn công tác nghiên cứu khoa học. lOMoAR cPSD| 60729183
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về JPEG. 1.1.1 JPEG là gì?
- JPEG là viết tắt của Joint Photographic Experts Group một trong những
phương pháp nén ảnh phổ biến. Trong khi ó ịnh dạng JPEG là một ịnh dạng hình
ảnh 16 bit giúp hiển thị hàng triệu màu sắc khác nhau. Chúng có thể kết hợp các ánh
xác ỏ, xanh lá, xanh dương ể hiển thị màu sắc sống ộng tạo nên sự thân thiện với
hình ảnh hiển thị. Nhờ những ặc tính này mà JPEG trở thành một trong những ịnh
dạng hình ảnh tiêu chuẩn cho máy ảnh, iện thoại và các thiết bị kỹ thuật số hiện tại.
1.1.2 Phương pháp nén ảnh JPEG là gì?
- Phương pháp nén ảnh JPEG là phương pháp nén Lossy hay còn gọi là nén
mất mát dữ liệu. Người dùng có thể cài ặt các chế ộ nén linh hoạt từ nén 0% ến nén
100%. Tuy vậy trong thực tế rất ít khi người ta sử dụng phương pháp nén tối a 0%
mà thường nén ở mức 55%->70%. Lựa chọn tỉ lệ nén này cho ịnh dạng JPEG cho
phép bức ảnh vừa có ộ nét cao vừa giảm dung lượng tốt nhất.
- Phương pháp nén ảnh theo thuẩn JPEG có thể cho hệ số nén tới 80:1 hay lớn
hơn, nhưng bạn phải chịu mất thông tin (ảnh sau khi bung nén khác với ảnh ban ầu),
lượng thông tin mất mát tăng dần theo hệ số nén. Tuy nhiên sự mất mát thông tin
này không bị làm một cách cẩu thả. JPEG tiến hành sửa ổi thông tin ảnh khi nén sao
cho ảnh mới gần giống như ảnh cũ, khiến phần ông mọi người không nhận thấy sự
khác biệt. Và bạn hoàn toàn có thể quản lý sự mất mát này bằng cách hạn chế hệ số
nén. Như thế người dùng có thể cân nhắc giữa cái lợi của việc tiết kiệm bộ nhớ và
mức ộ mất thông tin của ảnh, ể chọn phương án thích hợp.
- Phương pháp nén ảnh JPEG dựa trên nguyên lý sau: Ảnh màu trong không
gian của 3 màu RGB (red Green Blue) ược biến ổi về hệ YUV (hay YCBCr) ( iều
này không phải là nhất thiết, nhưng nếu thực hiện thì cho kết quả nén cao hơn). Hệ
YUV là kết quả nghiên cứu của các nhà sản xuất vô tuyến truyền hình hệ Pal, Secam
và NTSC, nhận thấy tín hiệu video có thể phân ra 3 thành phần Y, U, V (cũng như
phân theo màu chuẩn ỏ, xanh lá cây và xanh da trời). Và một iều thú vụ là hệ nhãn
thị của con người rất nhạy cảm với thành phần Y và kém nhạy cảm với hai loại U lOMoAR cPSD| 60729183
và V. Phương pháp JPEG ã nắm bắt phát hiện này ể tách những thông tin thừa của
ảnh. Hệ thống nén thành phần Y của ảnh với mức ộ ít hơn so với U, V, bởi người ta
ít nhận thấy sự thay ổi của U và V so với Y.
1.2 Lý do chọn ề tài.
- Phổ biến và quan trọng: JPEG là một trong những ịnh dạng ảnh nén phổ biến
nhất và ược sử dụng rộng rãi trên internet, trong ngành quảng cáo, thiết kế ồ họa và
nhiếu ứng dụng khác. Nghiên cứu về ịnh dạng nén JPEG sẽ giúp sinh viên hiểu rõ
về quá trình nén ảnh và ứng dụng thực tế của nó.
- Tính tương thích: JPEG là một ịnh dạng ảnh tương thích với hầu hết các thiết
bị và phần mềm xử lý ảnh, giúp dễ dàng chia sẻ và sử dụng ảnh trên nhiều nền tảng
khác nhau. Nghiên cứu về cách nén ảnh theo chuẩn JPEG sẽ giúp sinh viên hiểu về
tính tương thích và ứng dụng của ịnh dạng này trong thực tế.
- Hiệu suất và chất lượng: JPEG sử dụng kỹ thuật nén mất mát ể giảm kích
thước tệp mà vẫn giữ ược chất lượng ảnh tốt ối với nhiều ứng dụng. Nghiên cứu về
việc nén ảnh theo chuẩn JPEG sẽ giúp sinh viên hiểu về cách tối ưu hiệu suất và
chất lượng trong việc lưu trữ và chia sẻ ảnh.
- Ứng dụng thực tế: Việc làm bài tập lớn với ề tài nén ảnh theo chuẩn JPEG có
thể giúp sinh viên áp dụng kiến thức về lý thuyết nén ảnh vào thực tế, từ việc xử lý
ảnh số, ến việc lưu trữ và chia sẻ ảnh trên các nền tảng trực tuyến..
 Việc chọn ề tài nén ảnh theo chuẩn JPEG ể làm bài tập lớn sẽ giúp sinh viên hiểu
rõ về tính tương thích, hiệu suất và ứng dụng thực tế của ịnh dạng nén ảnh này, ồng
thời cung cấp cơ hội áp dụng kiến thức lý thuyết vào thực tế.
1.3 Ưu và nhược iểm của phương pháp nén ảnh JPEG. 1.3.1 Ưu iểm. -
Định dạng ảnh JPEG có rất nhiều ưu iểm vượt trội so với các ịnh dạng
khác. Sử dụng công nghệ nén tiên tiến cho phép hình ảnh hiển thị ầy ủ màu sắc
hơn với 16 triệu màu. Có nghĩa là rằng bức ảnh sẽ trở nên sống ộng và thân
thiện hơn khi chúng cần thể hiện một lượng màu lớn. -
Công nghệ nén linh hoạt cho phép bức ảnh giảm dung lượng vài lần ến vài lOMoAR cPSD| 60729183
chục lần. Chất lượng của bức ảnh vẫn giảm dần theo hệ số nén. Tuy vậy ở một chừng
mực nào ó JPEG cho chất lượng ảnh tốt với dung lượng ảnh rất nhỏ. Tính năng này
ặc biệt hữu ích khi chúng ược ăng tải lên web, giảm dung lượng lưu trữ và cải thiện tốc ộ load trang. 1.3.2 Nhược iểm.
- JPEG là công nghệ nén tiên tiến thế nhưng chúng tồn tại 2 nhược iểm chưa
thể khắc phục bao gồm: Tạo ra các vùng mờ, và không giữ ược ộ trong suốt của ảnh.
Theo ó, trong quá trình nén ảnh bức ảnh sẽ xuất hiện các iểm mờ giữa các mảng
màu. Ngoài ra khi bạn thực hiện nén ảnh, bức ảnh của bạn không thể khôi phục lại
chất lượng ảnh gốc của bức ảnh. Các vùng màu của jpeg bị giảm ộ sắc nét có thể
nhìn thấy rõ khi tăng hệ số nén.
- Đặc biệt ịnh dạng ảnh JPEG không thể tạo ra những bức ảnh có ộ trong suốt
và ảnh ộng. Điều này ồng nghĩa với việc những bức ảnh ược cắt ra (không có nền)
sẽ bị thay bằng một nền màu sắc. Những bức ảnh ộng của bạn khi tạo ra bởi các
phần mềm sẽ chuyển thành ảnh tĩnh mặc dù trong phần mềm nó là ảnh ộng. Khi bạn
muốn tạo ra các bức ảnh có ộ trong suốt hoặc ảnh ộng buộc bạn phải sử dụng các ịnh dạng ảnh khác.
CHƯƠNG 2. GIỚI THIỆU VỀ PYTHON
2.1 Giới thiệu về ngôn ngữ lập trình Python. 2.1.1 Python là gì?
- Python là ngôn ngữ lập trình máy tính bậc cao thường ược sử dụng ể xây
dựng trang web và phần mềm, tự ộng hóa các tác vụ và tiến hành phân tích dữ liệu.
Python là ngôn ngữ có mục ích chung, nghĩa là nó có thể ược sử dụng ể tạo nhiều
chương trình khác nhau và không chuyên biệt cho bất kỳ vấn ề cụ thể nào.
2.1.2 Python mang lại những lợi ích gì?
- Những lợi ích của Python bao gồm:
• Các nhà phát triển có thể dễ dàng ọc và hiểu một chương trình Python vì
ngôn ngữ này có cú pháp cơ bản giống tiếng Anh. lOMoAR cPSD| 60729183
• Python giúp cải thiện năng suất làm việc của các nhà phát triển vì so với
những ngôn ngữ khác, họ có thể sử dụng ít dòng mã hơn ể viết một chương trình Python.
• Python có một thư viện tiêu chuẩn lớn, chứa nhiều dòng mã có thể tái sử
dụng cho hầu hết mọi tác vụ. Nhờ ó, các nhà phát triển sẽ không cần phải viết mã từ ầu.
• Các nhà phát triển có thể dễ dàng sử dụng Python với các ngôn ngữ lập
trình phổ biến khác như Java, C và C++.
• Cộng ồng Python tích cực hoạt ộng bao gồm hàng triệu nhà phát triển nhiệt
tình hỗ trợ trên toàn thế giới. Nếu gặp phải vấn ề, bạn sẽ có thể nhận ược
sự hỗ trợ nhanh chóng từ cộng ồng.
• Trên Internet có rất nhiều tài nguyên hữu ích nếu bạn muốn học Python.
Ví dụ: bạn có thể dễ dàng tìm thấy video, chỉ dẫn, tài liệu và hướng dẫn dành cho nhà phát triển.
• Python có thể ược sử dụng trên nhiều hệ iều hành máy tính khác nhau,
chẳng hạn như Windows, macOS, Linux và Unix.
2.2 Ứng dụng Python trong xử lý hình ảnh.
2.2.1 Xử lý ảnh hình thái học (Morphological Image Processing).
- Morphological Image Processing gồm các phép toán phi tuyến tính (non-
linear) tác ộng ến hình dạng hoặc hình thái của ảnh nhị phân. Thuật toán này loại bỏ
các iểm nhiễu và làm mịn hình ảnh.
- Xử lý hình thái học cũng có thể ược mở rộng cho hình ảnh thang ộ xám. Nó
bao gồm những thao tác phi tuyến tính liên quan ến cấu trúc của các vị trí trong ảnh,
phụ thuộc vào thứ tự pixel. Kỹ thuật này phân tích một hình ảnh bằng cách sử dụng
phần tử cấu trúc (structuring element) ặt ở những vị trí khác nhau trong hình ảnh và
ược so sánh với các pixel lân cận tương ứng. Phần tử cấu trúc là một ma trận nhỏ
với các giá trị 0 và 1. lOMoAR cPSD| 60729183
- Hai thao tác cơ bản của quá trình xử lý hình thái học là Dilation (phép giãn) và Erosion (phép co):
• Phép giãn thêm pixel vào ranh giới của ối tượng trong một hình ảnh
• Phép co loại bỏ các pixel khỏi ranh giới ối tượng.
- Số lượng pixel ược xóa hoặc thêm vào hình ảnh gốc phụ thuộc vào kích thước
của phần tử cấu trúc.
2.2.2 Xử lý hình ảnh Gaussian.
- Gaussian blur (làm mờ/mịn Gaussian) là kết quả của việc làm mờ hình ảnh bởi một hàm Gaussian.
- Kỹ thuật này ược sử dụng ể giảm nhiễu ảnh và các chi tiết. Hiệu ứng hình
ảnh của kỹ thuật Gaussian tương tự như việc nhìn một hình ảnh qua màn hình mờ.
Trong thị giác máy tính, Gaussian ược sử dụng ể tăng cường hình ảnh ở các quy mô
khác nhau hoặc như một kỹ thuật tăng cường dữ liệu trong học sâu.
- Hàm gaussian cơ bản ược biểu diễn như sau:
- Trong thực tế, có thể tận dụng ặc tính có thể phân tách của Gaussian blur ể
chia quá trình thành 2 lần. Lần ầu tiên, kernel một chiều (nhân hệ iều hành) ược sử
dụng ể làm mờ hình ảnh chỉ theo hướng ngang hoặc dọc. Lần thứ hai, kernel một
chiều tương tự ược dùng ể làm mờ theo hướng còn lại. Kết quả thu ược là kernel hai
chiều. Dưới ây là một ví dụ trực quan ể hiểu tác ộng của bộ lọc Gaussian ối với hình ảnh. lOMoAR cPSD| 60729183
- Có thể thấy, Gaussian filter là bộ lọc thông thấp, tức là làm suy yếu các tần
số cao. Nó thường ược sử dụng trong phát hiện cạnh.
2.2.3 Fourier Transform trong xử lý ảnh.
- Phép biến ổi Fourier chia hình ảnh thành các thành phần sin và cosin. Nó có
nhiều ứng dụng như tái tạo hình ảnh, nén hình ảnh hoặc lọc hình ảnh.
- Một hình sin bao gồm ba yếu tố:
• Độ lớn – liên quan ến ộ tương phản.
• Tần số không gian – liên quan ến ộ sáng.
• Pha – liên quan ến thông tin màu.
- Hình ảnh trong miền tần số biểu thị như sau: lOMoAR cPSD| 60729183
- Công thức cho phép biến ổi fourier rời rạc 2D là:
Trong công thức trên, f (x, y) biểu thị hình ảnh.
- Phép biến ổi fourier nghịch ảo chuyển phép biến ổi trở lại hình ảnh. Công
thức cho phép biến ổi fourier rời rạc nghịch ảo 2D là:
2.2.4 Phát hiện cảnh trong xử lý.
- Phát hiện cạnh là một kỹ thuật xử lý hình ảnh ể tìm ranh giới của các ối tượng
trong hình ảnh. Nó hoạt ộng bằng cách phát hiện những iểm không liên tục về ộ
sáng. Thuật toán này có thể nhanh chóng phản ứng nếu phát hiện một số nhiễu trong lOMoAR cPSD| 60729183
ảnh ồng thời phát hiện các biến thể của mức xám. Các cạnh ược ịnh nghĩa là cực ại cục bộ của gradient.
- Thuật toán phát hiện cạnh phổ biến nhất là thuật toán phát hiện cạnh sobel.
Toán tử phát hiện Sobel ược tạo thành từ các hạt nhân chập 3*3. Một kernel ơn giản
Gx và một kernel xoay 90 ộ Gy. Các phép o riêng biệt ược thực hiện bằng cách áp
dụng cả hai kernel riêng biệt vào hình ảnh.
*biểu thị phép toán tích chập xử lý tín hiệu 2D.
Gradient kết quả có thể ược tính như sau:
2.2.5 Xử lý hình ảnh Wavelet. lOMoAR cPSD| 60729183
- Phép biến ổi Fourier chỉ giới hạn ở tần số, trong khi ó Wavelet xem xét cả
thời gian và tần suất. Biến ổi này phù hợp với các tín hiệu không cố ịnh.
- Cạnh là một trong những phần quan trọng của hình ảnh, tuy nhiên, khi áp
dụng các bộ lọc truyền thống, nhiễu ược loại bỏ nhưng hình ảnh bị mờ. Biến ổi
Wavelet ược thiết kế ể có ược ộ phân giải tần số tốt cho các thành phần tần số thấp.
Dưới ây là ví dụ về biến ổi wavelet 2D.
2.3 Các thư viện xử lý ảnh. 2.3.1 OpenCV.
- OpenCV là viết tắt của Open Source Computer Vision Library. Thư viện này
bao gồm khoảng hơn 2000 thuật toán ược tối ưu hóa hữu ích cho thị giác máy tính
và học máy. Có một số cách bạn có thể sử dụng OpenCV trong xử lý hình ảnh như sau:
• Chuyển ổi hình ảnh từ không gian màu này sang không gian màu khác,
chẳng hạn như giữa BGR và HSV, BGR và màu xám, v.v. lOMoAR cPSD| 60729183
• Thực hiện ngưỡng trên hình ảnh, như, ngưỡng ơn giản, ngưỡng thích ứng, v.v.
• Làm mịn hình ảnh, như, áp dụng các bộ lọc tùy chỉnh cho hình ảnh và làm mờ hình ảnh.
• Thực hiện các phép toán hình thái trên ảnh.
• Xây dựng hình kim tự tháp.
• Trích xuất tiền cảnh từ hình ảnh bằng thuật toán GrabCut.
• Phân oạn ảnh sử dụng thuật toán watershed.
2.3.2 Hình ảnh Scikit.
- Scikit là một thư viện mã nguồn mở ược sử dụng ể tiền xử lý hình ảnh. Nó
sử dụng học máy với các chức năng tích hợp và có thể thực hiện các hoạt ộng phức
tạp trên hình ảnh chỉ với một vài chức năng.
- Scikit hoạt ộng với các mảng numpy và là một thư viện khá ơn giản ngay cả
ối với những người mới làm quen với python. Một số thao tác có thể ược thực hiện
bằng hình ảnh scikit là:
• Để triển khai các hoạt ộng tạo ngưỡng, hãy sử dụng phương thức
try_all_threshold () trên hình ảnh. Nó sẽ sử dụng bảy thuật toán ngưỡng
toàn cầu. Đây là trong mô un bộ lọc.
• Để thực hiện phát hiện cạnh, hãy sử dụng phương thức sobel () trong mô
un bộ lọc. Phương pháp này yêu cầu hình ảnh thang ộ xám 2D làm
ầu vào, vì vậy chúng ta cần chuyển ổi hình ảnh sang thang ộ xám.
• Để thực hiện làm mịn gaussian, hãy sử dụng phương thức gaussian () trong mô-un bộ lọc.
• Để áp dụng cân bằng biểu ồ, hãy sử dụng mô-un phơi sáng.
• Để áp dụng cân bằng biểu ồ bình thường cho hình ảnh gốc, hãy sử dụng
phương thức equalize_hist (). lOMoAR cPSD| 60729183
• Để áp dụng cân bằng thích ứng, hãy sử dụng phương thức equalize_adapthist ().
• Để xoay hình ảnh, hãy sử dụng hàm xoay () trong mô un biến ổi.
• Để thay ổi tỷ lệ hình ảnh, hãy sử dụng hàm rescale () từ mô-un biến ổi.
• Để áp dụng các phép toán hình thái, hãy sử dụng hàm binary_e wear () và
binary_dilation () trong mô-un hình thái học. 2.3.3 PIL/PILLOW.
- PIL là viết tắt của Python Image Library. Đây là một trong những thư viện
mạnh mẽ, hỗ trợ một loạt các ịnh dạng hình ảnh như PPM, JPEG, TIFF, GIF, PNG và BMP.
- Nó có thể giúp bạn thực hiện một số thao tác trên hình ảnh như xoay, thay ổi
kích thước, cắt xén, chia tỷ lệ màu xám, v.v. Hãy xem qua một số thao tác ó:
• Để tải một hình ảnh, hãy sử dụng phương thức open ().
• Để hiển thị một hình ảnh, hãy sử dụng phương thức show ().
• Để biết ịnh dạng tệp, hãy sử dụng thuộc tính format.
• Để biết kích thước của hình ảnh, hãy sử dụng thuộc tính size.
• Để biết về thuộc tính chế ộ sử dụng ịnh dạng pixel.
• Để lưu tệp hình ảnh sau khi xử lý, hãy sử dụng phương thức save (). Pillow
lưu tệp hình ảnh ở ịnh dạng png.
• Để thay ổi kích thước hình ảnh, hãy sử dụng phương thức resize () nhận
hai ối số là chiều rộng và chiều cao.
• Để cắt hình ảnh, hãy sử dụng phương thức crop () lấy một ối số dưới dạng
một bộ hộp xác ịnh vị trí và kích thước của vùng ược cắt.
• Để xoay hình ảnh, hãy sử dụng phương thức xoay () nhận một ối số là số
nguyên hoặc số thực thể hiện mức ộ xoay. lOMoAR cPSD| 60729183
• Để lật hình ảnh, hãy sử dụng phương thức biến ổi () lấy một ối số trong số các ối số sau: o Image.FLIP_LEFT_RIGHT. o
Image.FLIP_TOP_BOTTOM,Image.ROTATE_90.
o Image.ROTATE_180, Image.ROTATE_270. 2.3.4 NumPy.
- Với thư viện này, bạn cũng có thể thực hiện các kỹ thuật hình ảnh ơn giản,
chẳng hạn như lật hình ảnh, trích xuất các tính năng và phân tích chúng.
- Hình ảnh có thể ược biểu diễn bằng các mảng a chiều và do ó kiểu của chúng
là NdArrays. Hình ảnh màu là một mảng có 3 chiều. Bằng cách cắt mảng a chiều,
các kênh RGB có thể ược tách ra.
- Dưới ây là một số thao tác có thể ược thực hiện bằng NumPy trên hình ảnh
(hình ảnh ược tải trong một biến có tên test_img bằng cách sử dụng imread).
• Để lật hình ảnh theo hướng dọc, hãy sử dụng np.flipud (test_img).
• Để lật hình ảnh theo hướng ngang, hãy sử dụng np.fliplr (test_img).
• Để ảo ngược hình ảnh, hãy sử dụng test_img [:: – 1] (hình ảnh sau khi lưu
trữ dưới dạng mảng numpy ược ặt tên là ).
• Để thêm bộ lọc vào hình ảnh, bạn có thể làm như sau:
o Ví dụ: np.where (test_img > 150, 255, 0), tức là trong hình này nếu tìm
thấy bất kỳ thứ gì bằng 150, thì hãy thay thế nó bằng 255, nếu không thì 0.
- Bạn cũng có thể hiển thị các kênh RGB riêng biệt. Nó có thể ược thực hiện
bằng cách sử dụng oạn mã này:
• Để có ược kênh màu ỏ, hãy thực hiện test_img [:,:, 0], ể có ược kênh màu
xanh lá cây, hãy thực hiện test_img [:,:, 1] và ể có ược kênh màu xanh lam,
hãy thực hiện test_img [:,:, 2]. 2.3.5 Mahotas. lOMoAR cPSD| 60729183
- Đây là một thư viện xử lý hình ảnh và thị giác máy tính và có hơn 100 chức
năng. Nhiều thuật toán của nó ược thực hiện bằng C++. Bản thân Mahotas là một
mô-un ộc lập, tức là nó có phụ thuộc tối thiểu.
- Hiện tại, Mahotas chỉ phụ thuộc vào trình biên dịch C++ ể tính toán số, không
cần mô-un NumPy, trình biên dịch thực hiện tất cả công việc của nó. lOMoAR cPSD| 60729183
CHƯƠNG 3. CÀI ĐẶT Module 1: from PIL import Image
def compress_image(input_image_path,
output_image_path, quality=75): try: # Mở ảnh with
Image.open(input_image_path) as img:
# Nén ảnh và lưu lại với chất lượng ã chỉ ịnh
img.save(output_image_path, quality=quality)
print(f"Đã nén và lưu ảnh thành công: {output_image_path}") except Exception as e:
print(f"Lỗi: {e}") # Đường dẫn
ến ảnh bạn muốn nén input_image = "anhnen1.jpg"
# Đường dẫn và tên của ảnh sau khi nén
output_image = "anhdanen1.jpg"
compress_image(input_image, output_image)
 Đoạn code Python này sử dụng thư viện Pillow (PIL) ể nén một hình ảnh ầu vào
tại một mức ộ chất lượng nhất ịnh và lưu ảnh ã nén ra một tệp khác.
 From PIL import Image: Dòng này import class Image từ thư viện Pillow ể làm việc với hình ảnh.
 Hàm compress_image nhận các ối số ầu vào sau:
• Input_image_path: Đường dẫn của hình ảnh ầu vào cần nén.
• Output_image_path: Đường dẫn và tên tệp sẽ lưu ảnh ã nén.
• Quality=20: Tham số tùy chọn ể chỉ ịnh mức ộ chất lượng của ảnh sau khi nén.
Giá trị mặc ịnh là 20 nếu không ược chỉ ịnh.
• Khối try-except: Code ược bọc trong một khối try-except ể bắt lỗi trong quá trình
xử lý ảnh. Nếu có lỗi xảy ra, nó sẽ ược bắt và in ra thông báo lỗi cụ thể.  Trong khối try: lOMoAR cPSD| 60729183
• With Image.open(input_image_path) as img:: Sử dụng Image.open() ể mở
hình ảnh từ ường dẫn ầu vào và gán nó vào biến img. with statement ảm
bảo rằng tài nguyên hình ảnh ược óng tự ộng sau khi hoàn thành việc làm việc với ảnh.
• Img.save(output_image_path, quality=quality): Hàm save() ược sử dụng ể
lưu ảnh ã mở vào ường dẫn và tên tệp ược chỉ ịnh trong output_image_path.
Tham số quality ược sử dụng ể chỉ ịnh mức ộ nén/chất lượng của ảnh sau
khi lưu. Trong trường hợp này, giá trị này ược truyền từ tham số quality của hàm compress_image.
• Printf("Đã nén và lưu ảnh thành công: {output_image_path}"): Thông báo
in ra nếu quá trình nén và lưu ảnh thành công.
 Trong khối except: Nếu có lỗi xảy ra trong quá trình xử lý ảnh, thông báo lỗi cụ thể sẽ ược in ra.
 Đoạn code này thực hiện việc nén hình ảnh theo mức ộ chất lượng ược chỉ ịnh
(thông qua tham số quality), giúp giảm kích thước tệp ảnh với mức ộ mất mát chất
lượng nhất ịnh. Trong trường hợp này, chất lượng ảnh sau khi nén ược thiết lập là
75 ( ược truyền qua hàm compress_image). Giá trị càng cao thì chất lượng ảnh
càng tốt, nhưng tệp tin có thể càng lớn.  Kết quả. lOMoAR cPSD| 60729183 Ảnh ã nén Ảnh gốc Size ảnh ã nén Size ảnh gốc Kết luận
Kết quả ạt ược.
- Kỹ thuật nén ảnh JPEG là một tiêu chuẩn nén ảnh phổ biến, ược áp dụng
trong nhiều lĩnh vực như lưu trữ ảnh, fax màu, camera số, v.v. Kết quả ạt ược trong
kỹ thuật nén ảnh JPEG là: