Hình ảnh và kỹ thuật xử lý hình ảnh - Bài tập lớn môn Công nghệ đa phương tiện | Đại học Công nghệ Đông Á
Hình ảnh và kỹ thuật xử lý hình ảnh - Bài tập lớn môn Công nghệ đa phương tiện | Đại học Công nghệ Đông Á. Tài liệu được biên soạn dưới dạng file PDF gồm 23 trang, giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kì thi sắp tới. Mời bạn đọc đón xem!
Preview text:
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 Bắc Ninh, năm 2023
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 Mã sinh STT
Sinh viên thực hiện viên
Điểm bằng số Điểm bằng chữ 1 Vũ Văn Huy 20222591 2
Nguyễn Hữu Thành Long 20222767 3 Hoàng Tô Thành 20222745 4 Hoàng Nguyễn Tuấn 20222762 CÁN BỘ CHẤM 1 CÁN BỘ CHẤM 2
(Ký và ghi rõ họ tên)
(Ký và ghi rõ họ tên) 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
(Morphological Image Processing).
Xử lý ảnh hình thái học
........................................ 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 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 3
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. 4
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ị 5
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 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 6
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. 7
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.
• 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. 8
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.
- 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: 9
- 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.
- 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ố: 10
• Độ 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:
- 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à: 11
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
ả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: 12
2.2.5 Xử lý hình ảnh Wavelet.
- 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. 13
2.3 Các thư viện xử lý ản . h 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.
• 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 14
đầ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 ().
• Để á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 15
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.
• Để 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 16
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.
- Đâ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ó. 17
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ể. 18 ➢ Trong khối try:
• 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. 19 ❖ Kết quả. Ảnh gốc Ảnh đã nén Size ảnh gốc Size ảnh đã nén 20 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à:
• Giảm dung lượng ảnh: JPEG cho phép giảm dung lượng ảnh mà vẫn giữ
được chất lượng hình ảnh tương đối cao. Tỷ lệ nén có thể đạt mức vài chục lần (hệ số nén 80:1).
• Xử lý tốt mất mát thông tin: Trong quá trình nén, JPEG xử lý tốt việc
mất mát thông tin, khiến người nhìn không nhận ra sự khác biệt. Ảnh đã
nén sau khi giải mã trùng khớp với ảnh ban đầu.
• Tương thích với nhiều thiết bị và phần mềm khác nhau: Định dạng ảnh
JPEG có thể hiển thị trên hầu hết các trình duyệt web, ứng dụng xem ảnh,
máy in, và nhiều thiết bị khác.
❖ Hướng phát triển.
- Kỹ thuật nén ảnh JPEG là một lĩnh vực nghiên cứu đầy tiềm năng và thách thức,
có nhiều hướng phát triển trong tương lai. Dưới đây là một số hướng phát triển của kỹ thuật nén ảnh JPEG:
• Cải thiện chất lượng ảnh sau nén:
o Giảm thiểu các hiện tượng biến dạng như khối hóa, răng cưa, và các hiện tượng khác.
o Tối ưu hóa việc giảm mất mát thông tin trong quá trình nén.
• Tăng hiệu suất nén:
o Sử dụng các phương pháp biến đổi khác nhau như wavelet, fractal, để tăng hiệu suất nén.
o Nghiên cứu các thuật toán nén mới để đạt được tỷ lệ nén tốt hơn. 21
• Thích ứng với các loại ảnh khác nhau:
o Xử lý ảnh động, ảnh nhiều chiều, ảnh y tế, và các loại ảnh đặc thù khác. • Bảo mật ảnh:
o Nhúng thông tin bí mật vào ảnh đã nén.
o Sử dụng các kỹ thuật mã hóa, chữ ký số để bảo vệ ảnh. 22
DANH MỤC SÁCH THAM KHẢO
1. Trang web https://vinbigdata.com [tham khảo ngày 7 tháng 1 năm 2023] 2. Tài liệu bài giảng. 23