



















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à: