Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
4,44 MB
Nội dung
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA KỸ THUẬT ĐIỆN TỬ I
----------
CÔNG NGHỆ PHÁT THANH TRUYỀN HÌNH SỐ
ĐỀ TÀI
Tổng quan về định dạng file ảnh
và phương pháp chuyển đổi định dạng file ảnh
Giảng viên: Nguyễn Quốc Dinh
Nhóm 12: Nguyễn Trung Kiên
Ngô Tuấn Linh
Lã Hùng Anh
Lớp:
D11XLTH
Hà Nội, 2015
Mục lục
2
Lời mở đầu
Ngày này, với sự phát triển mạnh mẽ của ngành công nghiệp máy tính, các sản phẩm đồ
họa ngày càng nâng cao về chất lượng cũng như giảm dung lương lưu trữ, tiết kiệm bộ nhớ
cho hệ thống nói chung và trong truyền hình nói riêng. Nhưng chất lượng hình ảnh và dung
lượng lưu trữ luôn tỉ lệ nghịch với nhau. Với từng nhu cầu sử dụng mà ta có thể sử dụng các
loại định dạng đồ họa phù hợp. Nếu dùng để lưu trữ thì các định dạng sử dụng nén không
mất thông tin là sự lựa chọn số một, còn nếu muốn truyền tải trên Internet, hay lưu trữ trên
web… thì các định dạng hỗ trợ nén mất thông tin nhưng vẫn giữ được chất lượng tốt như
định dạng JPG là một lựa chọn phù hợp.
Nội dung của đề tài bao gồm 3 chương:
Chương 1: Tổng quan về định dạng file ảnh
Chương 2: Chuyển đổi định dạng file ảnh.
Chương 3: Mô phỏng kết quả trên matlab.
Nhóm sinh viên thực hiện đề tài:
Nguyễn Trung Kiên
Ngô Tuấn Linh
Lã Hùng Anh
Do hạn chế về mặt thời gian cũng như kiến thức nên không thể tránh khỏi những thiếu
sót trong lần biên soạn đầu tiên này, chúng em xin chân thành cảm ơn và mong đợi ý kiến
đóng góp của thầy cô và các bạn.
3
Danh mục hình vẽ
Hình 1. Pixel
Hình 2. Chia khung ảnh thành các ô (Pixel)
Hình 3. Nguyên lý trộn màu
Hình 4. Sự khác nhau giữa ảnh bitmap và ảnh vector1
Hình 5. Cấu trúc ảnh Index
Hình 6. Ánh xạ bản đồ màu trong ảnh Index
Hình 7. Ảnh Grayscale
Hình 8. Ảnh nhị phân
Hình 9. Cấu trúc ảnh RGB
Hình 10. Mô tả 3 thành phần màu trong ảnh RGB
Hình 11. Phương pháp biến đổi Radon
Hình 12. Ảnh định dạng GIF
Hình 13. Sơ đồ thuật toán LZW8
Hình 14. Khả năng nén của định dạng JPEG
Hình 15. Quá trình biến đổi DCT và DCT ngược
Hình 16. Ví dụ biến đổi DCT và DCT ngược khôi phục lại ảnh
Hình 17. Ví dụ về ảnh TIF
Hình 18. Cấu trúc lớp màu trong định dạng PNG
Hình 19. Ánh xạ bản đồ màu và kênh Alpha
Hình 20. Một số loại điểm ảnh trong PNG
Hình 21. Ảnh 24bit màu định dạng PNG
Hình 22. Đọc file JPEG
Hình 23. Xuất file PNG
Hình 24. Tạo khung giao diện trong Guide
Hình 25. Các thuộc tính của đối tượng trong Guide
Hình 26. Ảnh chuyển sang định dạng .tif
Hình 27. Mô hình biến đổi DCT ảnh xám
Hình 28. Giao diện mô phỏng
Hình 29. Ảnh nhập vào
Hình 30. Hiển thị ảnh gốc
Hình 31. Ảnh sau khi biến đổi DCT
Hình 32. Pixel ảnh gốc
Hình 33. Pixel ảnh sau khi biến đổi DCT
4
Danh mục bảng biểu
Bảng 1. Tần suất và sác xuất xuất hiện một số ký tự
Bảng 2. từ mã gán cho các kí tự bởi mã Huffman.............................................................30
Bảng 3: So sánh một số định dạng file ảnh thông thường
Danh mục chữ viết tắt
Tên viết tắt
JPG
PNG
TIFF
BMT
DPI
PPI
Tên đầy đủ
Photographic Experts Group
Portable Network Graphics
Tag Image File Format
Windows bitmap
Dots Per Inch
Pixels Per Inch
5
Dịch nghĩa
Định dạng file JPEG
Định dạng file PNG
Định dạng file TIFF
Định dạng file BMP
Số Dots trên một Inch
Số Pixel trên một Inch
Chương I. Tổng quan về định dạng file ảnh
1.1 Khái niệm ảnh số
Ảnh số được tạo nên từ hàng trăm ngàn cho đến hàng triệu ô vuông rất nhỏ - được coi là
những thành tố của bức ảnh và thường được biết dưới tên gọi là pixels. Máy tính hay máy in
sử dụng những ô vuông nhỏ này để hiển thị hay in ra bức ảnh. Để làm được điều đó máy
tính hay máy in chia màn hình, trang giấy thành một mạng lưới chứa các ô vuông, sau đó sử
dụng các giá trị chứa trong file ảnh để định ra mầu sắc, độ sáng tối của từng pixel trong
mạng lưới đó - ảnh số được hình thành.
1.2 Pixel
Pixel là một điểm vật lý trong một hình ảnh raster hoặc một khối màu rất nhỏ và là đơn
vị cơ bản nhất để tạo nên một bức ảnh kỹ thuật số. Mỗi điểm ảnh là một mẫu của một hình
ảnh ban đầu, nhiều điểm ảnh hơn thường cung cấp đại diện chính xác hơn của bản gốc.
Hình ảnh trong hệ thống màu sắc, màu sắc thường là ba hoặc bốn đại diện trong cường độ
thành phần như màu đỏ, xanh lá cây, và màu xanh, hoặc màu lục lam, đỏ tươi…
Hình 1. Pixel
Hầu hết các chương trình ứng dụng đồ họa đều diễn tả độ phân giải của hình ảnh bằng
pixel dimensions - kích thước pixel. Ví dụ, một hình ảnh có kích thước là “2592x1944” sẽ
chứa 2,592 pixel trên mỗi hàng ngang và 1,944 pixel trên mỗi hàng dọc.
Hình 2. Chia khung ảnh thành các ô (Pixel)
6
1.3 Độ phân giải (dpi,ppi)
Khái niệm resolution - độ phân giải chỉ lượng thông tin được chứa đựng trong một tập
tin ảnh kỹ thuật số được hiển thị trên các thiết bị hoặc được in ra, thông thường được đo
bằng pixel. Nói một cách tổng quát, độ phân giải của bức ảnh càng cao, thì việc hiển thị nó
trên website hoặc trang in càng chi tiết và mượt mà - do đó một vài bức ảnh có độ phân giải
rất cao có thể chứa nhiều pixels hơn mức mà mà mắt người có thể nhìn thấy.
Sự khác biệt giữa Pixels Per Inch và Dots Per Inch. Mặc dù thường được dùng thay thế
cho nhau, tuy nhiên, về mặt kỹ thuật, pixels per inch (PPI) và dots per inch (DPI) không
phải là một. PPI chỉ số lượng pixel có trên 1 inch của một bức ảnh số hoặc màn hình máy
tính. PPI tuy không ảnh hưởng đến chất lượng thực sự của bản thân bức ảnh nhưng nó có
thể ảnh hưởng đến việc hiển thị bức ảnh đó trên trang web hoặc bản in.
DPI, ở một khía cạnh khác, lại chỉ độ phân giải của các bản in mà máy in có thể tạo ra.
Đây là một đặc tính vật lý của máy in. Mỗi dot của máy in đều có kích thước vật lý xác
định. Máy in sử dụng các dot mực để hiển thị hình ảnh; máy in tạo ra càng nhiều dot trên
một inch vuông thì chất lượng bản in càng cao. Các dòng máy in cấp thấp có DPI thấp trong
khi các dòng máy in cấp cap sẽ có DPI cao. Ví dụ, một máy in hỗ trợ 1200DPI có nghĩa là
máy thể in 1200 điểm trên 1 inch (theo cả chiều ngang lẫn chiều dọc).
Khi in ấn, một điểm quan trọng cần chú ý, đó là phải đảm bảo rằng DPI phải lớn hơn
hoặc bằng PPI. Nếu DPI nhỏ hơn PPI, máy in sẽ không thể thể hiện được đầy đủ được độ
phân giải cao của tấm ảnh. Nếu DPI lớn hơn PPI, máy in sẽ sử dụng nhiều dot mực để biểu
diễn một pixel. Trái ngược với PPI, DPI không phụ thuộc vào kích cỡ trang in. DPI là một
chỉ số cố định với một máy in cho trước.
1.4 Lý thuyết màu
Hình 3. Nguyên lý trộn màu
Màu sắc được lưu trong dữ liệu số hóa theo hai chế độ chính: RGB và CMYK.
RGB(Red, Green, Blue) các màu trong hình khối được tạo và lưu theo tỷ lệ của 3 màu cơ
bản: đỏ, xanh da trời và xanh lá cây. Phần lớn các máy tính hiện nay đều sử dụng chế độ
này. Thang màu được chỉ định từ 0 đến 255. Ảnh RGB sử dụng ba màu để tái tạo đến 16.7
triệu màu sắc tự nhiên. RGB là chế độ mặc định cho các ảnh trong Paint.
Màn hình máy tính luôn luôn hiển thị các màu sử dụng mô hình RGB. Một số ưu điểm
khi sử dụng màu RGB:
- Tiết kiệm dung lượng nhớ và cải thiện hiệu suất làm việc trong quá trình tách màu.
7
- Độc lập cao đối với thiết bị, do không gian màu RGB không phụ thuộc vào màn hình
hoặc mực in.
CMYK (Cyan, Magenta, Yellow, Black) là các màu bù với màu cơ bản RGB trong vòng
tròn màu. Các màu này thường được sử dụng trong ngành công nghiệp in ấn và xuất bản.
Màu CMYK là phần màu được sử dụng tạo ra màu sắc cho việc in ảnh trong máy in. Mô
hình CMYK dựa trên chất lượng hấp thụ ánh sáng của mực in trên giấy. Khi ánh sáng trắng
va đập trên mực, một phần của phổ bị hấp thụ và một phần phản xạ trở lại đến mắt con
người. Về lý thuyết, các sắc tố tinh khiết, xanh lơ (C) đỏ thẫm (M) và vàng (Y) phải kết hợp
với nhau để hấp thụ toàn bộ màu và tạo ra màu đen. Trong ảnh CMYK màu trắng thuần tuý
được tạo ra khi cả bốn thành phần đều có giá trị bằng 0. Các màu cơ bản được sử dụng là:
Xanh lơ, Đỏ tươi, Vàng và Đen.
1.5 Độ sâu màu
Là tổng số màu được sử dụng trong một ảnh, điều này tuỳ thuộc vào kích thước, chất
lượng, độ phân giải, cũng như định dạng ảnh. Độ sâu màu được tính bằng số pixel màu hiển
thị. Một bit ảnh thể hiện 2 màu. Đối với ảnh đen trắng độ sâu màu là 1 bit, ảnh đa cấp xám
là 8 bit (256 màu), ảnh đầy đủ màu sắc gồm 256 màu. Mỗi ảnh RGB có 24 bit (16.7 triệu)
màu, với các ảnh chuyên nghiệp độ sâu màu là 30~48 bit (10~16 triệu) màu.
1.6 Định dạng ảnh bitmap
1.5.1. Khái niệm
Ảnh Bitmap được xây dựng từ các điểm ảnh màu (pixels) là một khối nhỏ màu hình chữ
nhật. Tất cả các điểm màu được sắp xếp với nhau theo một trật tự tạo thành ảnh. Định dạng
ảnh bitmap được thiết kế sử dụng đối với các điểm ảnh hoặc hình đồ hoạ tương tự nhau.
Một bức ảnh được tạo nên từ rất nhiều các điểm pixels. Các ảnh có độ phân giải cao (chất
lượng ảnh tốt) bao gồm nhiều pixels và chiếm nhiều không gian bộ nhớ hơn so với cùng bức
ảnh có độ phân giải thấp. Trong quá trình tạo ảnh cho trang Web, file ảnh được chỉnh sửa và
thường lưu lại với độ phân giải là 72 pixels/inch (1 inch = 2.54 cm). Màn hình máy tính có
độ phân giải là 2-96 pixel trên 1 inch tuỳ thuộc vào hãng sản xuất máy tính. Người ta sử
dụng lớp ảnh bitmap cho đồ hoạ văn bản tạo vì tính năng tiện lợi trong việc chỉnh sửa sau
này cũng như việc lưu mỗi đối tượng tạo ra trên các lớp.
1.5.2 Đặc điểm
Ảnh Bitmap phụ thuộc vào độ phân giải. Độ phân giải được hiểu là tập hợp các điểm
pixel trong 1 ảnh và tính bằng dpi (dots per inch) hoặc ppi (pixels per inch). Ảnh Bitmap
hiển thị trên máy tính có độ phân giải là: 72 hoặc 96 ppi. Tuy nhiên khi in ảnh bitmap đạt
chất lượng cao chúng ta cần đặt độ phân giải khoảng 150-300.
Đối với ảnh Bitmap chúng ta không thể phóng to, thu nhỏ kích thước ảnh mà vẫn giữ
nguyên chất lượng ảnh. Giảm kích thước ảnh Bitmap đồng nghĩa với việc chúng ta xoá đi
một số điểm pixel và không thể khôi phục lại được. Tăng kích thước ảnh Bitmap bằng cách
tạo mới thêm các điểm pixel, chương trình xử lý ảnh sẽ ước lượng giá trị màu dựa trên các
điểm màu gần nó, quá trình đó gọi là Inter polation.
8
Việc thay đổi kích thước ảnh được gọi chính xác là quá trình “điều chỉnh tỷ lệ” (trong đồ
hoạ trình diễn, đây là sự điều chỉnh trục y - trục giá trị được chọn bởi chương trình, sao cho
các cách biệt về dữ liệu được rõ ràng. Mọi chương trình đồ hoạ đều có khả năng chia thang
tỷ lệ trên trục y, nhưng thang đó có thể không thoả mãn. Điều chỉnh thang bằng tay sẽ cho
kết quả tốt hơn). Tuy nhiên khi tăng kích thước ảnh lên chúng ta cần chú ý tới hạn định sự
xuất hiện bề mặt lởm chởm răng cưa. Điều chỉnh tỷ lệ kích thước ảnh Bitmap nhỏ đi sẽ
không tạo bất kỳ hiệu ứng nào. Thực tế khi thu nhỏ ảnh chúng ta đã tăng độ phân giải của
ảnh.
Ảnh Bitmap nói chung không trợ giúp việc tạo nền trong suốt, ngoại trừ hai định dạng
file ảnh GIF và PNG trợ giúp hiệu ứng này. Cần chú ý rằng các phần mềm sửa đổi ảnh đều
trợ giúp việc tạo hiệu ứng trong suốt nhưng chỉ có 2 định dạng file trên mới lưu được hiệu
ứng này. Một quan niệm sai lầm khi cho rằng vùng ảnh được tạo trong suốt sẽ duy trì hiệu
ứng đó khi file ảnh được lưu dưới bất kỳ định dạng ảnh nào hoặc khi ta sao chép và dán
sang một chương trình khác. Thực tế, hiệu ứng đó sẽ không còn, tuy nhiên trong một số
phần mềm xử lý ảnh thông dụng ta có thể giấu, lưu vùng ảnh bitmap được tạo trong suốt.
Một số định dạng ảnh Bitmap thông dụng:
• BMP
• GIF
• JPEG, JPEG2000
• PNG
• TIFF
1.7. Định dạng ảnh vector
1.7.1 Khái niệm
Ảnh Vector được tạo mới từ rất nhiều đối tượng khác nhau. Đối tượng Vector được xác
định bởi các hàm toán học mà không phải là các điểm ảnh, ảnh vector cho chất lượng ảnh
cao hơn ảnh Bitmap. Các đối tượng cơ bản bao gồm đường thẳng, đường cong và một số
hình toán học gốc với các thuộc tính màu sắc, độ dày đường thẳng...
1.7.2 Đặc điểm
Người ta hoàn toàn có thể thay đổi các thuộc tính đối tượng ảnh vector mà không ảnh
hưởng tới đối tượng cơ bản đó. Đối với ảnh vector chúng ta không chỉ thay đổi thuộc tính
mà còn có thể thay đổi hình dạng và sự hiển thị ảnh qua các điểm nút của ảnh.
Ảnh vector cho phép biến đổi theo tỷ lệ do đó chúng không phụ thuộc vào độ phân giải.
Ta có thể tăng giảm kích thước cả trên màn hình hay khi in mà không ảnh hưởng tới chất
lượng ảnh.
Một ưu điểm nổi bật khác của ảnh vector là chúng không hạn chế về hình dạng các điểm
như trong ảnh bitmap. Đối tượng vector này có thể thay thế hoàn toàn bởi đối tượng vector
khác.
Bên cạnh những ưu điểm nổi bật, hạn chế cơ bản nhất của ảnh vector là sự không thích
hợp đối với các ảnh tự nhiên, ảnh chụp từ máy kỹ thuật số. Ảnh vector được tạo từ các vùng
màu thuần nhất hoặc vùng màu xám nhưng chúng không thể mô tả các màu sắc tinh tế khác
9
nhau trong một bức ảnh. Đó cũng chính là lý do tại sao chúng ta không thấy ảnh vector xuất
hiện nhiều trong các bức tranh nghệ thuật, tranh truyện cũng như hình biếm họa. Tuy nhiên
ngày nay công cụ tạo ảnh vector trợ giúp chúng ta ứng dụng đối tượng bề mặt ảnh bitmap
giống như cảnh tự nhiên và trên đó ta hoàn toàn có thể tạo hiệu ứng, tạo cảnh nền trong
suốt, tạo bóng cho từng đối tượng để có các cảnh khác nhau tuỳ theo mục đích sử dụng.
Các đối tượng Vector cơ bản được xây dựng sẵn trong phần mềm, chúng ta không thể
quét một ảnh vào và lưu dưới dạng ảnh vector mà không sử dụng phần mềm chuyển đổi đặc
biệt. Ảnh vector dễ dàng chuyển đổi sang ảnh bitmap. Khi chuyển đổi ta có thể xác định bất
kỳ kích thước nào cho ảnh bitmap mà không ảnh hưởng tới chất lượng ảnh. Tuy vậy, điều
cần nhớ trước khi chuyển ảnh là phải lưu lại ảnh vector gốc bởi lẽ ảnh bitmap đã mất đi toàn
bộ chất lượng và trạng thái vector của các đối tượng trong ảnh. Chú ý rằng khi ta mở ảnh
vector trong phần mềm chỉ trợ giúp ảnh bitmap thì tất cả các thuộc tính, chất lượng ảnh
vector sẽ bị chuyển đổi thành dữ liệu ảnh bitmap.
Lý do quan trọng nhất khi ta quyết định chuyển đổi ảnh vector sang ảnh bitmap là khi
chúng được sử dụng trên trang Web. Tại thời điểm hiện nay, các trang Web đều chưa hỗ trợ
định dạng ảnh vector một cách hiệu quả. Chúng ta có thể sử dụng ảnh vector trên
Macromedia Flash nhưng định dạng file này yêu cầu phải hỗ trợ Plug-in. Định dạng SVG
được coi là định dạng chuẩn ảnh vector trên Web.
Ảnh gốc Ảnh bitmap (400%) Ảnh vector (400%) Ảnh vector có chế độ phân giải không
phụ thuộc vào kích thước ảnh, chúng không biến đổi khi ta phóng to, thu nhỏ ảnh như đối
với ảnh bitmap. Do đối tượng vector được xây dựng từ các phương trình toán học khác với
đối tượng bitmap được tạo thành từ các điểm ảnh, kích thước file ảnh vector nhỏ hơn nhiều
so với kích thước cùng ảnh bitmap.
Metafiles là ảnh đồ họa chứa cả dữ liệu ảnh bitmap và ảnh vector. Ví dụ một ảnh vector
có thể chứa đối tượng mẫu được tạo thành từ các điểm pixel như là tô màu vùng. Lúc đó file
này chứa ảnh vector nhưng thuộc tính tô màu được ghi dưới dữ liệu ảnh bitmap.
Một số định dạng ảnh Vector thông dụng:
• AI (Adobe Illustrator)
• CDR (CorelDRAW)
• CMX (Corel Exchange)
• CGM Computer Graphics Metafile
• DRW (Micrografx Draw)
• DXF AutoCAD
• WMF Windows Metafile
1.7.3 So sánh ảnh bitmap với ảnh vector
a. Ảnh bitmap
• Tập hợp các điểm màu pixels
• Phụ thuộc vào chế độ phân giải
• Chất lượng giảm khi thay đổi lại kích thước ảnh
• Dễ dàng chuyển đổi giữa các định dạng ảnh
• Hạn chế là hình dạng, kích thước ảnh luôn luôn là hình chữ nhật
10
Chỉ có một số (rất ít) định dạng ảnh trợ giúp tạo hiệu ứng trong suốt
b. Ảnh vector
• Được xác định bằng các đường toàn học, dễ dàng thay đổi, điều chỉnh tỷ lệ,
hình dạng và tạo các hiệu ứng trên ảnh
• Chất lượng ảnh không phụ thuộc vào độ phân giải, phóng to, thu nhỏ ảnh
• Không tạo nền, luôn có mặc định hỗ trợ hiệu ứng trong suốt
• Thường tạo các cảnh khung, xương sống ảnh có sẵn qua các hình dạng, đối
tượng toán học cơ bản Không thích hợp đối với các ảnh nghệ thuật cao, ảnh tự
nhiên, hay ảnh chụp kỹ thuật số.
•
Hình 4. Sự khác nhau giữa ảnh bitmap và ảnh vector
11
Chương II. Chuyển đổi định dạng file ảnh
2.1 Các kiểu ảnh trong matlab
2.1.1 Ảnh Index
Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận màu (còn
gọi là bản đồ màu) map. Ma trận dữ liệu có thể thuộc kiểu uint8, uint16 hoặc double.
Hình 5. Cấu trúc ảnh Index
Ma trận màu là một ma trận kich thước m x 3 gồm các thành phần thuộc kiểu double có
giá trị trong khoảng [0 1]. Mỗi hàng của ma trận xác định thành phần red, green, blue của
một màu trong tổng số m màu được sử dụng trong ảnh. Giá trị của một phần tử trong ma
trận dữ liệu ảnh cho biết màu của điểm ảnh đó nằm ở hàng nào trong ma trận màu.
Hình 6. Ánh xạ bản đồ màu trong ảnh Index
12
2.1.2 Ảnh Grayscale
Mỗi ảnh được biểu diễn bởi một ma trận hai chiều, trong đó giá trị của mỗi phần tử cho
biết độ sáng (hay mức xám) của điểm ảnh đó. Ma trận này có thể một trong các kiểu uint8,
uint16 hoặc double. Ảnh biểu diễn theo kiểu này còn gọi là ảnh “trắng đen”.
Hình 7. Ảnh Grayscale
2.1.3 Ảnh nhị phân
Ảnh được biểu diễn bởi một ma trận hai chiều thuộc kiểu logical. Mỗi điểm ảnh chỉ có
thể nhận một trong hai giá trị là 0 (đen) hoặc 1 (trắng)
Hình 8. Ảnh nhị phân
13
2.1.4 Ảnh RGB
Còn gọi là ảnh “truecolor” do tính trung thực của nó. Ảnh này được biểu diễn bởi một ma
trận ba chiều kích thước m x n x 3, với m x n là kích thước ảnh theo pixels. Ma trận này
định nghĩa các thành phần màu red, green, blue cho mỗi điểm ảnh, các phần tử của nó có thể
thuộc kiểu uint8, uint16 hoặc double.
Hình 9. Cấu trúc ảnh RGB
Hình 10. Mô tả 3 thành phần màu trong ảnh RGB
14
2.2 Các phép biến đổi ảnh số
2.2.1 Phép biển đổi Fourier
Phép biến đổi Fourier biểu diễn ảnh dưới dạng tổng của các lũy thừa phức của các thành
phần biên độ, tần số, pha khác nhau của ảnh. Nếu f(m,n) là một hàm của hai biến không
gian rời rạc m và n, thì biến đổi Fourier hai chiều của f(m,n) được định nghĩa:
Nếu f(m,n) biểu diễn độ sáng của ảnh X ở vị trí pixel (m,n) thì F(w1,w2) chính là biến
đổi
Fourier của ảnh X. Do các dữ liệu trên máy tính được lưu trữ dưới dạng rời rạc, cụ thể là
dữ liệu ảnh được tổ chức theo đơn vị pixel nên phép biến đổi Fourier cũng được rời rạc hóa
thành biến đổi Fourier rời rạc (DFT). Các phép biến đổi DFT thuận và nghịch kích thước M
x N được định nghĩa như sau:
F(p,q) gọi là các hệ số của biến đổi DFT.
Với các ứng dụng trong xử lý ảnh, chúng ta chỉ quan tâm đến các hàm fft2 và ifft2.
Cú pháp:
F=fft2(X,Mrows,Ncols)
f=ifft2(F,mrows,ncols)
Nếu ảnh ban đầu có kích thước nhỏ hơn thì Matlab tự động thêm vào các zero pixel
trước khi biến đổi. Sau khi thực hiện biến đổi DFT bằng fft2, thành phần DC sẽ nằm ở góc
trên bên trái của ảnh. Ta có thể dùng hàm fftshift để dịch thành phần DC này về trung tâm
của ảnh.
2.2.2. Biến đổi DCT
Biến đổi cosine rời rạc (DCT) biểu diễn ảnh dưới dạng tổng của các cosine của các thành
phần biên độ và tần số khác nhau của ảnh. Hàm dct2 tính DCT hai chiều của một ảnh. DCT
có tính chất mà với các ảnh điển hình, hầu hết các thông tin về ảnh chỉ tập trung trong một
vài hệ số của DCT, trong khi các hệ số còn lại chỉ chứa rất ít thông tin. Vì lý do này, DCT
thường được sử dụng trong các ứng dụng nén ảnh khác nhau nhờ hiệu suất gần như tối ưu
của nó đối với các ảnh có độ tương quan cao giữa các điểm ảnh lân cận. Chẳng hạn, DCT là
trung tâm của giải thuật nén ảnh theo chuẩn quốc tế thường được biết với tên JPEG (tên này
do nhóm phát triển đặt ra: Joint Photographic Experts Group)
DCT hai chiều của ma trận A có kích thước MxN được định nghĩa như sau :
M −1 N −1
B pq = α pα q ∑ ∑ Amn cos
m=0 n = 0
0 ≤ p ≤ M −1
π (2m + 1) p
π (2n + 1)q
cos
2M
2N
0 ≤ q ≤ N −1
với
15
1/ M
p=0
αp =
(2 / M ) 0 ≤ p ≤ M − 1
1/ N
q=0
αq =
(2 / N ) 0 ≤ q ≤ N − 1
1/ M
p=0
αp =
(2 / M ) 0 ≤ p ≤ M − 1
1/ N
q=0
αq =
(2 / N ) 0 ≤ q ≤ N − 1
Trong đó:
và
Các giá trị Bpq được gọi là các hệ số của biến đổi DCT. DCT có thể biến đổi ngược được và
biến đổi ngược của nó cho bởi công thức :
M −1 N −1
0 ≤ m ≤ M −1
π (2m + 1) p
π (2n + 1)q
Amn = ∑ ∑ α pα q B pq cos
cos
2M
2N
p=0 q =0
0 ≤ n ≤ N −1
với
Trong đó:
và
Biểu thức DCT ngược có thể được xem xét khi coi rằng mọi ma trận A kích thước MxN như
là tổng của MN hàm có dạng :
π (2m + 1) p
π (2n + 1) q
α pα q B pq cos
cos
2M
2N
Những hàm này đựơc gọi là những hàm cơ sở của DCT. Hệ số DCT B pq có thể được
xem như trọng số cho mỗi hàm cơ sở.
2.2.3 Biến đổi Radon
Phép biến đổi Radon được thực hiện bởi hàm radon trong Matlab, biểu diễn ảnh dưới
dạng các hình chiếu của nó dọc theo các hướng xác định. Hình chiếu của một hàm hai biến
f(x,y) là tập hợp các tích phân đường. Hàm radon tính các tích phân đường từ nhiều điểm
nguồn dọc theo các đường dẫn song song, gọi là các tia chiếu, theo một hướng xác định nào
đó. Các tia chiếu này nằm cách nhau 1 pixel. Để biểu diễn toàn bộ ảnh, hàm radon sẽ lấy
nhiều hình chiếu song song của ảnh từ các góc quay khác nhau bằng cách xoay các điểm
nguồn quanh tâm của ảnh.
Biến đổi Radon của f(x,y) tương ứng với góc quay Ѳ là tích phân đường của f dọc theo trục
y’:
RѲ (x’)
Khi: =
16
Hình 11. Phương pháp biến đổi Radon
Trong Matlab, biến đổi Radon được tính bằng hàm Radon có cú pháp như sau:
[R,Xp] = radon(I,theta)
2.3 Một số định dạng ảnh bitmap thông dụng
Ảnh thu được sau quá trình số hóa thường được lưu lại cho các quá trình xử lý ảnh tiếp
theo hoặc truyền đi. Trong quá trình phát triền của kỹ thuật xử lý ảnh, tồn tại nhiều định
dạng ảnh khác nhau từ đên trắng tới ảnh màu (BMP, JPEG, GIF,…). Tuy các định dạng này
khác nhau nhưng chúng đều tuân theo một cấu trúc chung nhất. Nhìn chung, một tệp ảnh bất
kỳ gồm 3 phần:
- Phần đầu tệp (Header)
- Phần dữ liệu nén (Data compression)
- Bảng màu (Palette Color)
Trong đó Phần đầu tệp là phần chưa thông tin về kiểu ảnh, kích thước, độ phân giải, số
bít dùng cho 1 pixel, cách mã hóa và vị trí bảng màu.
Phần dữ liệu nén: Lưu dữ liệu được nén bởi thuật toán khai bảo ở phần Header.
Phần cuối Bảng màu. Phần này không nhất thiết phải có ví dụ như ảnh đen trắng. Nếu có,
bảng màu cho biết số màu dùng trong ảnh và bảng màu được sử dụng để hiển thị màu của
ảnh. Một số các đinh dạng khác nhau, cấu hình khác nhau, đặc trưng khác nhau mà các
tham số này có thể khác nhau.
2.3.1 Định dạng ảnh GIF
GIF (từ viết tắt của Graphics Interchange Format) là một kiểu định dạng ảnh bitmap ra
đời năm 1987 bởi hãng CompuServe, sử dụng thuật toán nén không mất dữ liệu(thông tin)
LZW. Ảnh GIF có tối đa 256 màu (8 bits), được đánh chỉ số index trong bảng màu, cho
phép tạo màu nền trong suốt.
17
Hình 12. Ảnh định dạng GIF
2.3.1.1 Phương pháp nén LZW trong ảnh GIF
Giải thuật nén LZW xây dựng một từ điển lưu các mẫu có tần suất xuất hiện cao trong
ảnh. Từ điển là tập hợp những cặp từ vựng và nghĩa của nó. Trong đó, từ vựng sẽ là các từ
mã được sắp xếp theo thứ tự nhất định. Nghĩa là một chuỗi con trong dữ liệu ảnh. Từ điển
được xây dựng đồng thời với quá trình đọc dữ liệu. Sự có mặt của một chuỗi con trong từ
điển khẳng định rằng chuỗi đó đã từng xuất hiện trong phần dữ liệu đã đọc. Thuật toán liên
tục “tra cứu” và cập nhật từ điển sau mỗi lần đọc một ký tự ở dữ liệu đầu vào. Do kích
thước bộ nhớ không phải vô hạn và để đảm bảo tốc độ tìm kiếm, từ điển chỉ giới hạn 4096 ở
phần tử dùng để lưu lớn nhất là 4096 giá trị của các từ mã. Như vậy độ dài lớn nhất của từ
mã là 12 bits (4096 = 2^12).
Hình 13. Sơ đồ thuật toán LZW
18
+ 256 từ mã đầu tiên theo thứ tự từ 0…255 chữa các số nguyên từ 0…255. Đây là mã
của
256 kí tự cơ bản trong bảng mã ASCII.
+ Từ mã thứ 256 chứa một mã đặc biệt là “mã xóa”. Mục đích việc dùng mã xóa nhằm
khắc phục tình trạng số mẫu lặp trong ảnh lớn hơn 4096. Khi đó một ảnh được quan niệm là
nhiều mảnh ảnh, và từ điển là một bộ từ điển gồm nhiều từ điển con. Cứ hết một mảnh ảnh
người ta lại gửi một mã xóa để báo hiệu kết thúc mảnh ảnh cũ, bắt đầu mảnh ảnh mới đồng
thời khởi tạo lại từ điển cho mảnh ảnh mới. Mã xóa có giá trị là 256.
+ Từ mã thứ 257 chứa mã kết thúc thông tin. Mã này có giá trị là 257. Như chúng ta đã
biết, một file ảnh GIF có thể chứa nhiểu ảnh. Mỗi một ảnh sẽ được mã hóa riêng. Chương
trình giải mã sẽ lặp đi lặp lại thao tác giải mã từng ảnh cho đến khi gặp mã kết thúc thông
tin thì dừng lại.
+ Các từ mã còn lại (từ 258 đến 4095) chứa các mẫu thương lặp lại trong ảnh. 512 phần
tử đầu tiên của từ điển biểu diễn bằng 9 bit. Các từ mã từ 512 đến 1023 biểu diễn bởi 10 bit,
từ 1024 đến 2047 biểu diễn bởi 11 bit và từ 2048 đến 4095 biểu diễn bởi 12 bit.
2.3.1.2 Đánh giá định dạng ảnh GIF
GIF là một tập tin màu 8-bit, có nghĩa là hình ảnh mà tập tin cho ra bị giới hạn bởi 1
bảng gồm 256 màu sắc. Có 2 điều đặc biệt về định dạng GIF đó là tập tin có khả năng lưu
lại màu trong suốt và hỗ trợ hình ảnh động.
Tập tin GIF dùng nén dữ liệu bảo toàn trong đó kích thước tập tin có thể được giảm mà
không làm chất lượng hình ảnh kém đi (cho những hình ảnh có ít hơn 256 màu). Số lượng
tối đa 256 màu làm cho định dạng này không phù hợp cho các hình chụp (thường có nhiều
màu sắc), tuy nhiên các kiểu nén dữ liệu bảo toàn cho hình chụp nhiều màu cũng có kích
thước quá lớn đối với truyền dữ liệu trên mạng hiện nay.
So với định dạng JPEG là dạng nén dữ liệu thất thoát có thể được dùng cho các ảnh
chụp, nhưng lại làm giảm chất lượng cho các bức vẽ ít màu, tạo nên những chỗ nhòe thay
cho các đường sắc nét, đồng thời độ nén cũng thấp cho các hình vẽ ít màu. Như vậy, GIF
thường được dùng cho sơ đồ, hình vẽ nút bấm và các hình ít màu, còn JPEG được dùng cho
ảnh chụp.
Ưu điểm:
•
•
•
•
•
Được phổ biến rộng rãi nhất
Hỗ trợ tạo mức hiệu ứng nền trong suốt transparency
Có khả năng tạo chỉ số trong bảng màu
Nén không mất dữ liệu (thông tin)
Thích hợp cho các ảnh có số màu hiển thị không quá nhiều như ảnh đen
trắng, ảnh có từng vùng màu đơn như truyện tranh, đường kẻ nghệ thuật.
Nhược điểm:
•
•
Số màu tối đa sử dụng là 256 màu
Không thể thay đổi, điều khiển được tỷ lệ nén
19
•
Vì số màu được dùng hạn chế như thế nên không phù hợp với ảnh chất
lượng cao, ảnh nhiều màu đa dạng trong tự nhiên
2.3.2 Định dạng ảnh BMP
Định nghĩa: BMP là một định dạng ảnh chuẩn bitmap trong môi trường Microsoft
Windows. Ảnh được lưu có chỉ số hay không chỉ số các dữ liệu điểm ảnh RGB (tính theo
pixel) với độ lớn (kích thước 1, 4, 8, hay 24 bit) một cách có hiệu quả. Dữ liệu lưu có thể
không nén hay nén theo thuật toán nén dữ liệu 4-8 bit RLE. BMP là sự lựa chọn tốt nhất đối
với các định dạng ảnh bitmap đơn giản có hỗ trợ phạm vi dữ liệu điểm ảnh RGB rộng.
Trong đồ họa máy vi tính, BMP, còn được biết đến với tên tiếng Anh khác là Windows
bitmap, là một định dạng tập tin hình ảnh khá phổ biến. Các tập tin đồ họa lưu dưới dạng
BMP thường có đuôi là .BMP hoặc .DIB (Device Independent Bitmap). Các thuộc tính tiêu
biểu của một tập tin ảnh BMP (cũng như file ảnh nói chung) là
• Số bit trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n. Một ảnh BMP nbit có màu. Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn. Giá trị
tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536
màu) và 24 (ảnh 16 triệu màu). Ảnh BMP 24-bit có chất lượng hình ảnh trung thực
nhất.
• Chiều cao của ảnh (height), cho bởi điểm ảnh (pixel).
• Chiều rộng của ảnh (width), cho bởi điểm ảnh.
Cấu trúc tập tin ảnh BMP bao gồm 4 phần
• Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap.
• Bitmap Information (40 bytes): lưu một số thông tin chi tiết giúp hiển thị ảnh.
• Color Palette (4*x bytes), x là số màu của ảnh: định nghĩa các màu sẽ được sử dụng
trong ảnh.
• Bitmap Data: lưu dữ liệu ảnh.
Đặc điểm nổi bật nhất của định dạng BMP là tập tin hình ảnh thường không được nén
bằng bất kỳ thuật toán nào. Khi lưu ảnh, các điểm ảnh được ghi trực tiếp vào tập tin - một
điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc vào giá trị n của ảnh. Do đó, một
hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp nhiều lần so với các ảnh được
nén (chẳng hạn GIF, JPEG hay PNG).
Quá trình nén trong BMP
Bitmap là một chuỗi đơn giản của các điểm ảnh xếp chồng lên nhau. Tuy nhiên, cùng
một hình ảnh được lưu trong định dạng GIF hoặc JPEG sử dụng ít byte để lưu trữ cho các
tập tin.
Bitmap có thể được nén đến một điểm. Quá trình này được gọi là mã hóa Run Length
Encoding. RLE mã hóa tất cả các điểm cùng một màu sắc được kết hợp thành một điểm
ảnh. Một sự khác biệt là Bitmap thông thường có thể chấp nhận 16 triệu màu sắc khác nhau
cho mỗi điểm ảnh. Tiết kiệm cùng một hình ảnh trong mã hóa loạt dài giảm các bit-perpixel xuống 8. Giảm mức độ của màu sắc trong không nhiều hơn 256.
20
2.3.3 Định dạng ảnh JPEG
Định nghĩa: JPEG viết tắt của Joint Photographic Experts Group, một tổ chức tạo ra
định dạng ảnh đồ họa. JPEG sử dụng thuật toán nén mất thông tin. Ảnh JPEG có tối đa 16
triệu màu (24-bit), cung cấp thông tin định rõ tỷ lệ, mức độ nén.
JPEG là một trong những phương pháp nén ảnh hiệu quả, có tỷ lệ nén ảnh tới vài chục
lần. Tuy nhiên ảnh sau khi giải nén sẽ khác với ảnh ban đầu. Chất lượng ảnh bị suy giảm
sau khi giải nén. Sự suy giảm này tăng dần theo hệ số nén. Tuy nhiên sự mất mát thông tin
này là có thể chấp nhận được và việc loại bỏ những thông tin không cần thiết được dựa trên
những nghiên cứu về hệ nhãn thị của mắt người.
Phần mở rộng của các file JPEG thường có dạng .jpeg, .jfif, .jpg, .JPG, hay .JPE. dạng
.jpg là dạng được dùng phổ biến nhất. Hiện nay dạng nén ảnh JPEG rất được phổ biến trong
ĐTDD cũng như những trang thiết bị lưu giữ có dung lượng nhỏ.
Mức độ nhạy cảm của mắt người:
Trong không gian màu YUV, 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 và V. Phương pháp nén 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 độ suy
giảm í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.
Sự khác biệt giữa nén 1% và 50% không phải là quá xấu, nhưng sự sụt giảm byte là ấn
tượng. Các con số tôi cho thấy một số lượng lưu trữ, số lượng không gian ổ đĩa cứng hình
ảnh chiếm.
Có lẽ ta đã phỏng đoán rằng 50% có nghĩa là 50% của hình ảnh được bao gồm trong
thuật toán nén. Nếu không đặt một hình ảnh nén 50% bên cạnh một hình ảnh trùng lặp chính
xác ở nén 1%, thì có vẻ khá tốt. Nhưng những gì về hình ảnh đó nén 99%? Có vẻ khủng
khiếp. Nhìn vào nó một lần nữa. Xem làm thế nào nó được thực hiện của các khối? Đó là
những gì có nghĩa là bởi lossy. Bytes bị mất tại các chi phí của các chi tiết. Ta có thể thấy
nơi mà các thuật toán nén được tìm thấy nhiều nhóm pixel rằng tất cả các xuất hiện để được
gần gũi trong màu sắc và chỉ cần nhóm lại tất cả chúng với nhau như một.
21
Hình 14. Khả năng nén của định dạng JPEG
Mã hóa
Công đoạn chính là chia nhỏ bức ảnh thành nhiều vùng nhỏ (thông thường là những
vùng 8x8 pixel) rồi sử dụng biến đổi cosin rời rạc để biến đổi những vùng thể hiện này
thành dạng ma trận có 64 hệ số thể hiện "thực trạng" các pixel. Điều quan trọng là ở đây hệ
số đầu tiên có khả năng thể hiện "thực trạng" cao nhất, khả năng đó giảm rất nhanh với các
hệ số khác. Nói cách khác thì lượng thông tin của 64 pixels tập trung chủ yếu ở một số hệ số
ma trận theo biến đổi trên.
Trong giai đoạn này có sự mất mát thông tin, bởi không có biến đổi ngược chính xác.
Nhưng lượng thông tin bị mất này chưa đáng kể so với giai đoạn tiếp theo. Ma trận nhận
được sau biến đổi cosin rời rạc được lược bớt sự khác nhau giữa các hệ số. Đây chính là lúc
mất nhiều thông tin vì người ta sẽ vứt bỏ những thay đổi nhỏ của các hệ số. Như thế khi
bung ảnh đã nén ta sẽ có được những tham số khác của các pixel. Các biến đổi trên áp dụng
cho thành phần U và V của ảnh với mức độ cao hơn so với Y. Sau đó thì áp dụng phương
pháp mã hóa của Gernot Hoffman: phân tích dãy số, các phần tử lặp lại nhiều được mã hóa
bằng ký hiệu ngắn (marker). Khi bung ảnh người ta chỉ việc làm lại các bước trên theo quá
trình ngược lại cùng với các biến đổi ngược.
Nhược điểm lớn nhất là chất lượng ảnh đã bị nén mất đi (lossy), một số đường bao giữa
các khối màu sẽ xuất hiện điểm mờ, và các vùng sẽ mất đi sự rõ nét. Và giống như dạng
mp3, JPEG sẽ không thể phục hồi giống như hình ảnh ban đầu dù dung lượng được tăng lên
giống dung lượng ảnh thật.
Các ảnh JPEG không thể làm trong suốt hoặc chuyển động.
2.3.3.1 Quá trình biến đổi DCT trong định dạng JPEG
Ta có quá trình biến đổi DCT và mã hóa dữ liều theo sơ đồ sau:
22
Hình 15. Quá trình biến đổi DCT và DCT ngược
Ví dụ
Dưới đây là ví dụ về quá trình biến đổi DCT và quá trình biến đổi DCT ngược, khôi phục lại
ảnh gốc của một bức ảnh 8x8 như hình dưới:
23
Hình 16. Ví dụ biến đổi DCT và DCT ngược khôi phục lại ảnh
Code mô phỏng DCT trong matlab
T = dctmtx(8);
dct = @(block_struct) T * block_struct.data * T';
B = blockproc(I,[8 8],dct);
mask = [1 1 1 1 0 0 0 0
11100000
11000000
10000000
00000000
00000000
00000000
0 0 0 0 0 0 0 0];
B2 = blockproc(B,[8 8],@(block_struct) mask .* block_struct.data);
invdct = @(block_struct) T' * block_struct.data * T;
I2 = blockproc(B2,[8 8],invdct);
imshow(I), figure, imshow(I2)
2.3.3.2 Đánh giá ảnh nén bằng chuẩn JPEG
Ưu điểm:
•
•
•
•
•
Có nhiều tỷ lệ nén mất dữ liệu khác nhau
Có thể nén với tỷ lệ nén rất cao
Cung cấp 24-bit màu (16 triệu màu)
Định dạng tốt nhất đối với các ảnh cần nhiều màu sắc tự nhiên (màu liên
tiếp nhau trong bảng màu) như ảnh chụp phong cảnh, ảnh và các minh
hoạ trên sách báo, ảnh 3 chiều.
Có thể tải từng phần ảnh trên mạng vào từng thời điểm khác nhau (quá
trình "progressive JPEGs")
Nhược điểm:
•
•
Không thể đánh chỉ số màu trong bảng màu
Không hỗ trợ tạo ảnh nền trong suốt
24
•
•
Nén mất dữ liệu
Không phải mọi máy tính đề hiển thị tốt, cố định 24-bit màu
2.3.4 Định dạng ảnh TIF, TIFF
Định nghĩa: Tiff (Tag Image File Format) Loại file ảnh bitmap này sử dụng thuật toán
nén không mất dữ liệu và chúng ta có thể ghi lại dưới các định dạng file khác nhau, TIF và
TIFF được sử dụng rộng rãi. Photoshop cho phép chuyển đổi TIF sang định dạng ảnh vector
và có thể lưu tới 4 kênh màu. Với ảnh đồ hoạ trên web, chúng ta không thể thực hiện được 3
kênh màu sử dụng trong chế độ màu RGB (độ sâu màu là 24 bit).
Hình 17. Ví dụ về ảnh TIF
Đặc điểm:
Không sử dụng nén: 8bit, 12bit, 14bit, 16bit, 24bit…
Nếu nén có thể dùng: Lossless = LZW; Lossy JPEG, JBIG & JPEG2000
Độ phân dải: (khoảng 100-10,000 ppi) , rất lớn
Giới hạn cỡ ảnh: 4G
Giới hạn kiến trúc: 32bit
Hỗ trợ thuộc tính ICC
Hỗ trợ Metadata (EXIF)
2.3.4.1 Đánh giá ảnh lưu định dạng TIF,TIFF
Ưu điểm: Đây là định dạng tập tin “không làm mất dữ liệu” của hình ảnh trong quá trình lưu trữ
hay nén file. Uy tín trong việc bảo lưu chất lượng hình ảnh giúp TIFF là định dạng mẫu mực trong
việc lưu trữ tư liệu hình ảnh.
Nhược điểm:
Khuyết điểm duy nhất của file TIFF chính là dung lượng cồng kềnh. Do định dạng tập tin này
lưu trữ toàn bộ thông tin của các pixel trong dữ liệu nén chung của bức ảnh nên dung lượng của nó
luôn lớn hơn rất nhiều nếu so với file JPEG. Điều này khiến việc lưu trữ file TIFF luôn tốn nhiều
dung lượng bộ nhớ.
Với những ai quan tâm đến chất lượng hình ảnh và sợ file bị hỏng, TIFF luôn là lựa chọn hàng
đầu về độ tin cậy. Nhưng luôn nhớ rằng file TIFF nén cũng không giảm dung lượng bao nhiêu so
với file TIFF không nén.
25
2.3.5 Định dạng ảnh PNG
PNG (Portable Network Graphics) là một định dạng ảnh đồ hoạ bitmap được phát triển
thành định dạng ảnh chuẩn bởi W3C. PNG cho phép chúng ta sử dụng tới 256 chỉ số màu,
hỗ trợ 16~256 triệu màu (24- 48 bit màu), hỗ trợ việc tạo và lưu alpha kênh, tạo ảnh nền
trong suốt, đặc trưng riêng của ảnh PNG là thuật toán nén không mất dữ liệu (thông tin), tốt
hơn 10 ~ 30 % so với ảnh GIF.
Hình 18. Cấu trúc lớp màu trong định dạng PNG
26
Hình 19. Ánh xạ bản đồ màu và kênh Alpha
Hình 20. Một số loại điểm ảnh trong PNG
1. Màu chân thực với kênh alpha: mỗi điểm ảnh bao gồm bốn mẫu: đỏ, xanh lá cây,
xanh da trời, và alpha.
2. Ảnh xám với kênh alpha: mỗi điểm ảnh bao gồm hai mẫu: màu xám và alpha.
3. Màu chân thực: mỗi điểm ảnh bao gồm ba mẫu: đỏ, xanh lá cây, và màu xanh. Kênh
alpha có thể được đại diện bởi một giá trị pixel duy nhất. Pixel phù hợp là hoàn toàn nhìn
thấy, và tất cả những pixel khác là hoàn toàn ẩn. Nếu các kênh alpha không được đại diện
bằng cách này, tất cả các điểm ảnh là hoàn toàn ẩn.
4. Ảnh xám: mỗi điểm ảnh bao gồm một mẫu duy nhất: màu xám. Kênh alpha có thể
được đại diện bởi một giá trị pixel duy nhất như trong trường hợp trước. Nếu các kênh alpha
không được đại diện bằng cách này, tất cả các điểm ảnh là hoàn toàn ẩn.
5. Chỉ số màu: mỗi điểm ảnh bao gồm một chỉ số vào một bảng (một bảng liên quan
đến các giá trị alpha, nếu có).
Các định dạng của mỗi điểm ảnh phụ thuộc vào loại hình ảnh PNG và độ sâu bit. Đối
với các loại hình ảnh PNG khác hơn được lập chỉ mục màu sắc, độ sâu bit xác định số bit
cho mỗi mẫu, không phải là tổng số bit cho mỗi điểm ảnh. Đối với các hình ảnh được lập
chỉ mục màu sắc, độ sâu bit quy định cụ thể số lượng các bit trong mỗi chỉ số bảng màu, độ
sâu mẫu của các màu sắc trong bảng màu hoặc bảng alpha. Trong các điểm ảnh mẫu xuất
hiện theo thứ tự định trước, tùy thuộc vào loại hình ảnh PNG.
27
2.3.5.1 Phương pháp mã hóa Huffman
PNG sử dụng nén LZW hoặc mã hóa theo phương pháp Huffman nên hiệu quả hơn nén
mất dữ liệu.
Nguyên tắc
Phương pháp mã hóa Huffman là phương pháp dựa vào mô hình thông kê. Dựa vào dữ
liệu gốc, người ta tính tần suất xuất hiện của các ký tự. Việc tính tần suất được thực hiện bởi
cách duyệt tuần tựtệp gốc từ đầu đến cuối. Việc xửlý ở đây tính theo bit. Trong phương
pháp này người ta gán cho các ký tựcó tần suất cao một từmã ngắn, các ký tựcó tần suất
thấp từmã dài. Nói một cách khác, các ký tựcó tần suất càng cao được gán mã càng ngắn và
ngược lại. Rõ ràng với cách thức này, ta đã làm giảm chiều dài trung bình của từmã hóa
bằng cách dùng chiều dài biến đổi. Tuy nhiên, trong một sốtình huống khi tần suất là rất
thấp, ta có thểkhông được lợi một chút nào, thậm chí còn bịthiệt một ít bit.
Thuật toán
Thuật toán bao gồm 2 bước chính:
- Giai đoạn thứ nhất: tính tần suất của các ký tự trong dữ liệu gốc: duyệt tệp gốc một
cách tuần tự từ đầu đến cuối để xây dựng bảng mã. Tiếp sau đó là sắp xếp lại bảng mã theo
thứ tự tần suất giảm dần.
- Giai đoạn thứ hai: mã hóa: duyệt bảng tần suất từ cuối lên đầu để thực hiện ghép 2
phần tử có tần suất xuất hiện thấp nhất thành một phần tử duy nhất. Phần tử này có tần suất
bằng tổng 2 tần suất thành phần. Tiến hành cập nhật lại bảng và đương nhiên loại bỏ 2 phần
tử đã xét. Quá trình được lặp lại cho đến khi bảng chỉ có một phần tử. Quá trình này gọi là
quá trình tạo cây mã Huffman vì việc tập hợp được tiến hành nhờ một cây nhị phân 2
nhánh. Phần tử có tần suất thấp ở bên phải, phần tử kia ở bên trái. Với cách tạo cây này, tất
cả các bit dữ liệu/ký tự là nút lá, các nút trong là các nút tổng hợp. Sau khi cây đã tạo xong,
người ta tiến hành gán mã cho các nút lá. Việc mã hóa rất đơn giản: mỗi lần xuống bên phải
ta thêm 1 bit “1” vào từ mã, mỗi lần xuống bên trái ta thêm một bit “0”. Tất nhiên có thể
làm ngược lại, chỉ có giá trên mã thay đổi còn tổng chiều dài là không đổi. Cũng chính do lý
do này mà cây có tên gọi là cây mã Huffman như trên đã gọi. Quá trình giải nén tiến hành
theo chiều ngược lại khá đơn giản. Người ta cũng phải dựa vào bảng mã tạo ra trong giai
đoạn nén (bảng này được giữ lại trong cấu trúc của tệp nén cùng với dữ liệu nén). Thí dụ,
với một tệp dữ liệu mà tần suất các ký tự cho bởi.
Bảng 1. Tần suất và sác xuất xuất hiện một số ký tự
Ký tự
Tần suất
Xác suât
Ký tự
“0”
1532
0.2770
“7”
“1”
152
0.0275
“8”
“2”
323
0.0585
“9”
“3”
112
0.0746
“+”
“4”
226
0.0409
“-”
“5”
385
0.0696
“,”
“6”
602
0.1088
“”
Tần suất
92
112
87
220
315
536
535
Xác suất
0.0167
0.0203
0.0158
0.0396
0.0569
0.0969
0.0967
Lưu ý rằng, trong phương pháp Huffman, mã của ký tự là duy nhất và không mã nào là
28
phần bắt đầu của mã khác. Vì vậy, khi đọc tệp nén từng bit từ đầu đến cuối ta có thể duyệt
cây mã cho đến một lá, tức là ký tự đã được giải nén.
Bảng 2. từ mã gán cho các kí tự bởi mã Huffman
“0”
10
“-”
“6”
010
“4”
“.”
001
“+”
“”
000
“1”
“3”
1110
“8”
“5”
1100
“7”
“2”
0111
“9”
0110
11110
11011
111111
111110
110101
110100
2.3.5.2 Đánh giá định dạng PNG
PNG là dạng hình ảnh sử dụng phương pháp nén dữ liệu mới mà không làm mất đi dữ
liệu gốc. PNG được tạo ra nhằm cải thiện và thay thế định dạng ảnh GIF. PNG là định dạng
tập tin tuyệt vời cho các ảnh số trên mạng Internet bởi vì PNG hỗ trợ màu trong suốt trong
tất cả các trình duyệt web với những tính năng mà GIF không có. PNG hỗ trợ màu 8-bit
giống như GIF, đồng thời cũng hỗ trợ màu 24-bit RGB như JPG. Khi bạn nén một bức ảnh
bằng định dạng PNG, bức ảnh đó sẽ không hề bị giảm chất lượng. Chính vì thế dung lượng
các bức ảnh PNG rất lớn. Nhược điểm của ảnh dạng PNG đó là không được hỗ trợ trên các
trình duyệt web cũ, không phổ biến nhiều bằng JPG.
Hình 21. Ảnh 24bit màu định dạng PNG
Ưu điểm:
• Cho phép tạo 256 chỉ số màu
• Hỗ trợ 24 ~ 48 bit màu
• Hỗ trợ việc tạo, lưu alpha channel và tạo nền trong suốt
• Đặc biệt tỷ lệ nén không mất dữ liệu tốt hơn GIF từ 10 ~ 30 %
29
Nhược điểm:
•
Không phải là chuẩn được sử dụng rộng rãi, các trình duyệt Web chưa
hoàn toàn hỗ trợ định dạng file này.
2.4 So sánh tổng quan giữa các định dạng ảnh
Bảng 3: So sánh một số định dạng file ảnh thông thường
Loại định
dạng
Phần mở rộng
Độ sâu bit
Phương pháp
nén
Loại màu
TIFF 6.0
GIF 89a
JPEG
JP2-JPX/
JPEG 2000
PNG 1.2
.tif, .tiff
.gif
.jpeg, jpg,
.jp2, .jpx,.j2c
.png
1-bit; 4- or 8-bit
8-bit ảnh
Hỗ trợ lên tới 1-48bit màu,
14
ảnh xám hoặc ảnh 1-8 bit xám, 24bit 2 kênh, mỗi cái
24/48bit
palette lên tới 64 ảnh màu ảnh màu
1-38 bit màu
truecolor
bit màu
-Không nén
- Lossless: LZW... Lossless:
- Lossy: JPEG
LZW
RGB
YCbCr, CMYK
Lossy:
JPEG
Palette
YCbCr
- Không nén
- Lossless:
-Lossless/Lossy: Deflate,LZW,
Wavelet
Huffman…
Palette, YCbCr,
RGB, sRGB
Palette,
sRGB, ICC
(bản đồ màu)
2.5 Một số thuật toán chuyển đổi định dạng ảnh.
2.5.1 Chuyển đổi định dạng từ ảnh bitmap sang bitmap
Chuyển đổi một định dạng bitmap tới một định dạng bitmap thường rất đơn giản. Tất cả
các hình ảnh bitmap bao gồm các điểm ảnh, và cuối cùng tất cả các dữ liệu bitmap được
chuyển đổi sang định dạng bitmap khác tại một thời điểm. Tiêu đề Bitmap và các dữ liệu
chứa trong chúng có thể khác nhau đáng kể, nhưng các dữ liệu chứa trong chúng có thể
được thêm vào hoặc loại bỏ theo quyết định của phần mềm chuyển đổi để làm cho việc
chuyển đổi tốt nhất có thể.
Thông thường, một số sắp xếp lại các dữ liệu màu sắc là cần thiết. Điều này có thể mang
hình thức tách dữ liệu pixel thành dữ liệu bản đồ màu, hoặc bổ sung, loại bỏ bản đồ màu.
Nó thậm chí có thể dẫn đến chuyển đổi sang những mô hình màu khác. Việc không thành
công khi chuyển đổi bitmap sang bitmap xảy ra thường xuyên nhất là khi chuyển một tập tin
được viết trong một định dạng hỗ trợ các dữ liệu pixel sâu để chuyển sang một định dạng ít
màu sắc, ví dụ, nó chỉ hỗ trợ bảng màu. Điều này có thể xảy ra khi bạn đang chuyển đổi
giữa các định dạng hỗ trợ 24-bit dữ liệu và một định dạng hỗ trợ chỉ có 8-bit dữ liệu. Định
dạng bảng màu có thể không hỗ trợ lưu trữ đủ dữ liệu cần thiết để sản xuất một bản vẽ chính
xác của hình ảnh. Thông thường, một số hoạt động xử lý hình ảnh (quantization) là cần thiết
để nâng cao chất lượng của hình ảnh được chuyển. Hoạt động của loại này nhất thiết sẽ làm
cho hình ảnh chuyển đổi xuất hiện khác với bản gốc, và do đó về mặt kỹ thuật hình ảnh sẽ
không được bảo quản trong quá trình chuyển đổi.
30
Vấn đề chính khác xảy đến khi hình ảnh được chuyển phải được thực hiện nhỏ hơn hoặc
lớn hơn so với bản gốc. Nếu hình ảnh chuyển đổi là nhỏ hơn so với các thông tin ban đầu
trong hình ảnh ban đầu thì phải được vứt bỏ. Mặc dù các chiến lược xử lý hình ảnh có thể
được sử dụng để cải thiện chất lượng hình ảnh, một số thông tin được loại bỏ khi các tập tin
ban đầu được thu nhỏ lại. Nếu hình ảnh chuyển đổi là lớn hơn so với bản gốc, tuy nhiên,
thông tin phải được tạo ra để điền vào các không gian xuất hiện giữa các pixel liền kề trước
tức là hình ảnh ban đầu được mở rộng. Không có cách nào hoàn toàn thỏa đáng để làm điều
này và các quá trình hiện đang được sử dụng thường chỉ là tương đối.
2.5.1.1 Chuyển đổi định dạng JPG sang PNG
B1. Đọc ảnh JPG vào trong matlab
A=imread (‘đường dẫn ảnh.định dạng’);
Vd: A=imread (‘C:/Users/Trung_tks/Desktop/MoPhong/Avatar.jpg’);
Có thể hiển thị ảnh vừa đọc bằng cách
Imshow (A); %Anh vừa nhập sẽ hiển thị trên matlab
Hình 22. Đọc file JPEG
Xem thông số của ảnh bằng hàm imfinfo ();
B2. Lưu ảnh đã đọc dưới định dạng PNG
A=imwrite (A, “đường dẫn file ảnh.png”,png);
VD: A=imwrite (A,“C:/Users/Trung_tks/Desktop/MoPhong/Avatar.png”,“png”);
Xem các thông số cơ bản của ảnh bằng cách.
Info = imfinfo (“C:/Users/Trung_tks/Desktop/MoPhong/Avatar.png”);
Hiển thị ảnh vừa chuyển: Imshow(A)
31
Hình 23. Xuất file PNG
Info.BitDepth: Hiển thị độ sâu bit (24bit)
Info.Format: Hiển thị định dạng file ảnh (PNG)
Info.ColorType: Hiển thị loại màu file ảnh. (Truecolor)
Info.Width: Hiển thị chiều rộng khung ảnh (720)
Info.Height: Hiển thị chiều cao khung ảnh. (540)
Về chất lượng ảnh thì cả 2 đều hỗ trợ 24bit màu nên không có sự khác biệt nếu nhìn bằng
mắt thường. Chỉ khác biệt ở dung lượng. File gốc (.jpg) dung lượng lưu trữ: 42.6kB còn file
chuyển .PNG có dung lượng tới 386kB. Rõ ràng là lớn hơn rất nhiều lần so với ảnh gốc.
2.5.2 Chuyển đổi định dạng từ ảnh vector sang vector
Chuyển đổi giữa các định dạng vector là có thể và đôi khi khá dễ dàng. Hai vấn đề
nghiêm trọng có thể xảy ra. Đầu tiên là do sự khác biệt về số lượng và kiểu của các đối
tượng có sẵn trong các định dạng vector khác nhau. Một số định dạng, ví dụ, cung cấp hỗ
trợ cho chỉ có một yếu tố hình ảnh đơn giản, chẳng hạn như vòng tròn và hình chữ nhật.
Định dạng phong phú hơn cũng có thể cung cấp hỗ trợ cho nhiều yếu tố bổ sung phức tạp,
chẳng hạn như mô hình đầy, thả bóng, phông chữ văn bản, b-spline, và các đường cong
Bezier. Cố gắng để chuyển đổi một tập tin được viết trong một định dạng phức tạp phong
phú trong các yếu tố để một định dạng đơn giản sẽ cho kết quả trong một xấp xỉ của hình
ảnh ban đầu.
Vấn đề thứ hai xuất phát từ thực tế là có mỗi định dạng vector có giải thích riêng của
mình về các phép đo và sự xuất hiện của các yếu tố hình ảnh và nguyên thủy. Hiếm khi nào
hai định dạng đồng ý một cách chính xác vào vị trí và sự xuất hiện của các yếu tố hình ảnh
thậm chí đơn giản.
2.5.3 Chuyển đổi định dạng từ ảnh vecto sang bitmap
Chuyển đổi các tập tin định dạng vector sang các tập tin định dạng bitmap nói chung là
khá dễ dàng. Một hình ảnh vector có thể được chuyển vào một bitmap chỉ đơn giản bằng
32
cách chia nó ra thành pixels thành phần và sau đó viết những điểm ảnh vào một mảng trong
bộ nhớ trong tương đương với bộ nhớ của một màu sắc tương phản. Mảng sau đó có thể
được lưu trong một định dạng tập tin bitmap. Tuy nhiên, nó được lưu trữ trong một tập tin
bitmap như là một loạt các điểm ảnh màu chứ không phải là dữ liệu toán học mô tả vị trí của
các đường lên hình ảnh. Chất lượng cuối cùng của hình ảnh bitmap kết quả sẽ phụ thuộc vào
độ phân giải của bitmap được thực hiện và sự phức tạp (màu sắc, điểm ảnh chiều sâu, và các
tính năng hình ảnh) của hình ảnh vector ban đầu.
Vấn đề phổ biến nhất xảy ra với loại hình chuyển đổi này là răng cưa, một phần là do độ
phân giải tương đối thấp của các bitmap đầu ra.
2.5.4 Chuyển đổi định dạng từ ảnh bitmap sang vecto
Chuyển đổi các tập tin định dạng bitmap sang các tập tin định dạng vector thường là khó
khăn nhất và hiếm khi đạt được bất kỳ loại kết quả nào có thể sử dụng. Điều này là do thực
tế là thuật toán xử lý ảnh phức tạp và chẩn đoán là cần thiết để tìm tất cả các dòng và các
cạnh trong hình ảnh bitmap. Một khi được tìm thấy, họ phải được công nhận và chuyển đổi
sang vector với các yếu tố tương đương của họ và mỗi bước chuyển là dễ bị lỗi. Hình ảnh
bitmap đơn giản có thể được xấp xỉ như hình ảnh vector, thường là các đường kẻ màu đen
và trắng, nhưng loại hình ảnh nhiếp ảnh phức tạp hơn là gần như không thể tái tạo chính
xác.
Một vấn đề khác vốn có trong việc chuyển đổi các tập tin định dạng bitmap sang vector
là màu sắc. Mặc dù hầu hết các tập tin bitmap kết hợp nhiều màu sắc, nhưng định dạng
vector hiếm khi cung cấp hỗ trợ nhiều. Việc chuyển đổi một tập tin bitmap gốc vào một tập
tin vector có thể dẫn đến một sự mất mát của màu sắc trong hình ảnh được chuyển.
Tái tạo vector gần với các hình ảnh bitmap thông thường là không thể, trừ khi dữ liệu
bitmap là rất đơn giản.
33
Chương III. Mô phỏng kết quả trên matlab
3.1 Các hàm xử lý ảnh sử dụng matlab
3.1.1 Đọc và ghi dữ liệu ảnh
Hàm imread đọc các file ảnh với bất kỳ các định dạng ảnh đã biết hiện nay và lưu lại dưới
dạng một ma trận biểu diễn ảnh trong Matlab. Cú pháp: A=imread(filename,fmt)
Hàm imwrite cho phép lưu một ảnh biểu diễn bằng một ma trận trong Matlab thành một file
ảnh dưới một trong các định dạng đã biết.
Cú pháp: imwrite(A,filename,fmt)
Hàm imfinfo dùng để xem các thông số của một file ảnh nào đó. Cú pháp:
imfinfo(filename,fmt)
Các thông tin được cung cấp bởi hàm imfinfo là: filename, filemoddate, filesize, format,
formatversion, width, height, bitdepth, colortype.
3.1.2 Chuyển đổi giữa các kiểu dữ liệu, kiểu ảnh
a. Chuyển đổi giữa các kiểu dữ liệu ảnh
Matlab cung cấp sẵn các hàm thực hiện chuyển kiểu cho các ma trận biểu diễn ảnh, bao
gồm: im2double, im2uint8 và im2uint16. Tuy nhiên, khi thực hiện chuyển kiểu giữa các
dữ liệu ảnh cần lưu ý một số điều sau:
Khi chuyển từ một kiểu dữ liệu dùng nhiều bit sang một kiểu dữ liệu dùng it
bit hơn thì một số thông tin chi tiết về bức ảnh ban đầu sẽ bị mất.
Không phải lúc nào cũng có thể chuyển đổi kiểu dữ liệu đối với kiểu ảnh
indexed, vì các giá trị của ma trận ảnh xác định một địa chỉ trong bản đồ màu chứ
không phải là giá trị màu, do đó không thể lượng tử hóa được.
b. Chuyển đổi giữa các kiểu ảnh
Dither: dither(RGB,map)
dither(I)
Gray2ind: [X, Map] = gray2ind(I, N)
[X, Map] = gray2ind(BW, N)
Grayslice: x=grayslice(I, N)
x=grayslice(I, V)
Im2bw: bw=im2bw(I, level)
bw=im2bw(x,map, level)
bw=im2bw(rgb, level)
Ind2gray: i=ind2gray(x, map)
Ind2rgb: rgb=ind2rgb(x, map)
Mat2gray: i=mat2gray(a, [amin amax])
Rgb2gray: i=rgb2gray(rgb)
Rgb2ind: [x, map]=rgb2ind(rgb, n)
x=rgb2ind(rgb, map)
[x, map]=rgb2ind(rgb, tol)
34
3.1.3 Các phép toán cơ bản đối với dữ liệu ảnh
Các phép toán số học cơ bản trên các dữ liệu ảnh bao gồm các phép cộng, trừ, nhân và
chia. Tuy nhiên, Matlab chỉ hỗ trợ các phép toán này trên kiểu double nên cần thực hiện
chuyển đổi kiểu trước khi thực hiện. Để giảm bớt thao tác này, trong matlab có cung cấp các
hàm thực hiện các phép toán số học trên ảnh mà có thể chấp nhận bất kỳ kiểu dữ liệu ảnh
nào và trả về kết quả thuộc cùng kiểu với các toán hạng. Các hàm này cũng xử lý các dữ
liệu tràn một cách tự động.
Imabsdiff: z=imabsdiff(x,y)
Imadd: z=imadd(x,y,out_class)
Imcomplement: im2=imcomplement(im)
Imdivide: z=imdivide(x,y)
Imlincomb: z=imlincomb(k1,a1,k2,a2,…,kn,an,k,out_class)
Immultiply: z=immultiply(x,y)
Imsubstract: z=imsubstract(x,y)
3.1.4 Các hàm hiển thị trong matlab
Matlab cung cấp hai hàm hiển thị cơ bản là image và imagesc. Ngoài ra trong Matlab
cũng có hai hàm hiển thị ảnh khác, đó là imview và imshow.
Hàm image(X,Y,C) hiển thị hình ảnh biểu diễn bởi ma trận C kích thước M x N
lên trục tọa độ hiện hành. X, Y là các vector xác định vị trí các pixel C(1,1) và C(M,N)
trong hệ trục hiện hành.
Hàm imagesc có chức năng tương tự như hàm image, ngoại trừ việc dữ liệu ảnh
sẽ được co giãn để sử dụng toàn bộ bản đồ màu hiện hành.
Hàm imview cho phép hiển thị hình ảnh trên một cửa sổ riêng, nền Java, gọi là
image Viewer. Image Viewer cung cấp các công cụ dò tìm và xác định các giá trị pixel một
cách linh hoạt.
Hàm imshow cũng tạo một đối tượng đồ họa thuộc loại image và hiển thị ảnh trên một
figure. Hàm imshow sẽ tự động thiết lập các giá trị của các đối tượng image, axes và figure
để thể hiện hình ảnh.
3.1.5 Các phép biến đổi hình học
a. Phép nội suy
Nội suy là quá trình ước lượng giá trị của một điểm nằm giữa hai pixel có giá trị đã biết.
IPT cung cấp 3 phương pháp nội suy ảnh: nội suy theo các lân cận gần nhất, nội suy song
tuyến tính và nội suy bicubic. Cả 3 phương pháp đểu thực hiện theo nguyên tắc chung:
đểxác định giá trị của một pixel ảnh nội suy, ta tìm một điểm trong ảnh ban đầu tương ứng
với pixel đó, sau đó giá trị của pixel ở ảnh mới sẽ được tính bằng trung bình có trọng số của
một tập các pixel nào đó ở lân cận của điểm vừa xác định, trong đó trọng số c ủa các pixel
phụ thuộc vào khoảng cách tới điểm này.
Phương pháp lân cận gần nhất (nearest neighbor): pixel mới sẽ được gán giá trị
của pixel chứa điểm tương ứng của nó trong ảnh ban đầu
Phương pháp song tuyến tính (bilinear interpolation): pixel mới sẽ được gán là trung bình có
trọng số của các pixel trong một lân cận kích thước 2 x 2.
Phương pháp bicubic, pixel mới sẽ được gán là trung bình có trọng số của các pixel trong
một lân cận kích thước 4 x 4.
35
b. Thay đổi kích thước ảnh
Hàm imresize cho phép người sử dụng thay đổi kích thước ảnh. Ngoài kích thước ảnh mới,
người sử dụng còn có thể xác định phương pháp nội suy sẽ dùng và loại bộ lọc dùng để
chống aliasing.
Cú pháp:
b=imresize(a,m, method):tạo ảnh gấp m lần ảnh a.
b=imresize(a,[mrows mcols],method)
b=imresize(a,[mrows mcols],method,N)
b=imresize(a,[mrows mcols],method,h)
3.2 Mô phỏng kêt quả chuyển đổi giữa các định dạng ảnh bitmap
3.2.1 Guide và giao diện mô phỏng
- Guide là giao diện bằng hình ảnh của chương trình. Guide bao gồm các nút nhấn, hộp
liệt kê, thanh trượt, menu… chúng cung cấp cho người dùng sử dụng một môi trường làm
việc thân thiện để họ tập trung vào các ứng dụng của chương trình hơn là đi tìm hiểu cách
thức làm việc của chương trình đó.
Để mở công cụ tạo Gui : File -> New -> GUI
Khi lưu giao diện vừa tạo, Matlab sẽ tạo ra hai file có cùng tên nhưng khác phần mở
rộng:
- File có phần mở rộng .fig chứa nội dung của giao diện
- File có phần mở rộng .m chứa những đoạn mã liên quan đến giao diện
Hình 24. Tạo khung giao diện trong Guide
Khi thiết kế bất cứ thành phần nào của Guide ta cần thiết lập thuộc tính cho thành phần đó.
Để thiết lập các thuộc tính ta có thể chọn mục “ Property Inspector” trên thanh công cụ hoặc
right-click vào đối tượng và chọn mục “Inspector Properties”
Hai thuộc tính quan trọng mà ta cần xác lập: “String Property” và “ Tag Property”
- String property : dòng ký tự xuất hiện trên đối tượng.
- Tag property : tên của đối tượng.
36
Khi click chuột vào 1 đối tượng, Matlab sẽ gọi hàm tương ứng với đối tượng đó. Tên của
hàm chính là tên của đối tượng cộng với “_Callback”
Hình 25. Các thuộc tính của đối tượng trong Guide
3.2.2 Một số hàm sử dụng trong Guide
Set : Thay đổi giá trị của các thuộc tính của một đối tượng giao diện
Vd: set(handles.TextBox,‟String‟,str);
Get: Truy xuất giá trị của thuộc tính của một đối tượng giao diện
Cd: get(handles.EditBox,‟String‟);
Ngoài ra còn có các hàm như axes, guide, num2str(), str2num()… để chuyển đổi kiểu dữ
liệu….
3.2.3 Mô phỏng chuyển đổi ảnh JPG sang PNG và TIF
Đối với nút Display
% --- Executes on button press in Display.
function Display_Callback(hObject, eventdata, handles)
% hObject
handle to Display (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
A=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.jpg');
info=imfinfo('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.jpg');
set(handles.Width,'string',info.Width);
set(handles.Height,'string',info.Height);
set(handles.BitDepth,'string',info.BitDepth);
set(handles.ColorType,'string',info.ColorType);
set(handles.Format,'string',info.Format);
set(handles.FormatSignature,'string',info.FormatSignature);
set(handles.Pic1,'string',imshow(A));
37
Đối với nút PNG (chuyển ảnh sang PNG)
% --- Executes on button press in PNG.
function PNG_Callback(hObject, eventdata, handles)
% hObject
handle to PNG (see GCBO)
B=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.jpg');
imwrite (B,'C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.png','png');
inf=imfinfo ('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.png')
set(handles.Width,'string',inf.Width);
set(handles.Height,'string',inf.Height);
set(handles.BitDepth,'string',inf.BitDepth);
set(handles.ColorType,'string',inf.ColorType);
set(handles.Format,'string',inf.Format);
set(handles.FormatSignature,'string',inf.FormatSignature);
set(handles.Pic1,'string',imshow(B));
Đối với nút PNG (chuyển ảnh sang PNG)
% --- Executes on button press in TIF.
function TIF_Callback(hObject, eventdata, handles)
C=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.jpg');
imwrite (C,'C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.tif','tif');
info1=imfinfo ('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.tif')
set(handles.Width,'string',info1.Width);
set(handles.Height,'string',info1.Height);
set(handles.BitDepth,'string',info1.BitDepth);
set(handles.ColorType,'string',info1.ColorType);
set(handles.Format,'string',info1.Format);
set(handles.FormatSignature,'string',info1.FormatSignature);
set(handles.Pic1,'string',imshow(C));
38
Hình 26. Ảnh chuyển sang định dạng .tif
Kết quả: ảnh lưu định dạng TIF
- Filename: 'C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.tif'
- FileSize: 1057984
% Dung lượng ~1MB
- Format: 'tif'
% Định dạng TIF
- Width: 720
% Chiều rộng
- Height: 540
% Chiều cao
- BitDepth: 24
% Độ sâu bit màu
- ColorType: 'truecolor'
%Loại màu
- BitsPerSample: [8 8 8] % Số bit trên 1 mẫu
- Compression: 'PackBits' % Loại nén sử dụng
- PhotometricInterpretation: 'RGB'
- SamplesPerPixel: 3
% Số mẫu trên 1 Pixel
- XResolution: 72
% Phân dải chiểu X
- YResolution: 72
% Phân dải chiều Y
- ResolutionUnit: 'Inch'
% Bộ phân dải
Ảnh lưu định dạng PNG
- Filename: 'C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.png'
- FileSize: 395311
% Dung lượng: ~386Kb
- Format: 'png'
% Định dạng PNG
- Width: 720
- Height: 540
- BitDepth: 24
% 24bit màu
- ColorType: 'truecolor'
- FormatSignature: [137 80 78 71 13 10 26 10]
Nhận xét kết quả
Ảnh bitmap ban đầu là định dạng JPEG với 24bit màu có nén.
Sau khi chuyển sang 2 định dạng là PNG và TIF, về cơ bản chất lượng và độ sau màu
không khác biệt. Độ cảm nhận sắc nét về hình ảnh không có sự khác biết rõ rệt. Tuy nhiên
dung lượng lưu trữ các file định dạng này khác nhau. Đối với JPEG là 44.6KB, trong khi
PNG và TIF lần lượt là 368KB và 1MB.
39
Điều này nói lên rằng 2 định dạng PNG và TIF sử dụng phương thức nén không mất
thông tin nên dung lượng lưu trữ lơn hơn nhiều so với ảnh lưu với định dạng JPEG.
Thứ 2, chất lượng về cơ bản không khác nhau nhiều do đó có thể thấy được phương
pháp nén sử dụng trong định dạng JPEG tỏ ra rất hiệu quả. Vừa k làm giảm chất lượng hình
ảnh, vừa lưu trữ với dung lượng thấp hơn nhiều. Mặc dù xét về độ trung thực thì không
bằng hai định dạng kia.
3.2.4 Mô phỏng quá trình biến đổi DCT trong định dạng file JPEG
3.2.4.1 Mô hình biến đổi DCT ảnh xám
Ảnh con 8x8
Bảng lượng tử hóa
Ảnh con 8x8
Ảnh Gốc
Ảnh con 8x8
…
Lượng tử hóa
DCT
Mã hóa
Ảnh con 8x8
Ảnh nén
Hình 27. Mô hình biến đổi DCT ảnh xám
40
3.2.4.2 Thiết kế giao diện và viết chương trình
Hình 28. Giao diện mô phỏng
Quá trình chọn ảnh
function ChonAnh_Callback(hObject, eventdata, handles)
% hObject handle to ChonAnh (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg');
axes(handles.HT1);
imshow(S);
guidata(hObject, handles);
Quá trình nén DCT
function NenDCT_Callback(hObject, eventdata, handles)
% hObject handle to NenDCT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg');
axes(handles.HT2);
if size(S,3)==3
S=rgb2gray(S);
end
41
I = im2double(S);
T = dctmtx(8);
B = blkproc(I,[8 8],'P1*x*P2',T,T');
mask = [1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2 = blkproc(B,[8 8],'P1.*x',mask);
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);
imshow(I2)
handles.I2=I2;
guidata(hObject, handles);
Hiển thị Pixel ảnh gốc
function PixelAnh_Callback(hObject, eventdata, handles)
% hObject handle to PixelAnh (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg');
axes(handles.HT3);
if size(S,3)==3
S=rgb2gray(S);
end
I=im2double(S);
I1=imresize(I,[8 8]);
himage=imshow(I1);
hfigure=figure;
hpanel=impixelregionpanel(hfigure,himage);
Hiển thị Pixel ảnh nén sau khi biến đổi DCT
function PixelDCT_Callback(hObject, eventdata, handles)
% hObject handle to PixelDCT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg');
axes(handles.HT4);
if size(S,3)==3
S=rgb2gray(S);
end
I=im2double(S);
I1=imresize(I,[8 8]);
T=dct2(I1);
himage=imshow(T);
hfigure=figure;
hpanel=impixelregionpanel(hfigure,himage);
42
So sánh giá trị từng Pixel ảnh gốc và ảnh đã biến đổi DCT (8x8)
function KetQua_Callback(hObject, eventdata, handles)
S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg');
if size(S,3)==3
S=rgb2gray(S);
end
I=im2double(S);
A=imresize(I,[8 8]);
p=get(handles.TBHang,'string');
q=get(handles.TBCot,'string');
p=str2num(p);
q=str2num(q);
p=round(p);
q=round(q);
c=0;
p1=0;
q1=0;
goc=0;
if (p>0)&(q>0)
if (p[...]... Web chưa hoàn toàn hỗ trợ định dạng file này 2.4 So sánh tổng quan giữa các định dạng ảnh Bảng 3: So sánh một số định dạng file ảnh thông thường Loại định dạng Phần mở rộng Độ sâu bit Phương pháp nén Loại màu TIFF 6.0 GIF 89a JPEG JP2-JPX/ JPEG 2000 PNG 1.2 tif, tiff gif jpeg, jpg, jp2, jpx,.j2c png 1-bit; 4- or 8-bit 8-bit ảnh Hỗ trợ lên tới 1-48bit màu, 14 ảnh xám hoặc ảnh 1-8 bit xám, 24bit 2 kênh,... tạo ảnh nền trong suốt 24 • • Nén mất dữ liệu Không phải mọi máy tính đề hiển thị tốt, cố định 24-bit màu 2.3.4 Định dạng ảnh TIF, TIFF Định nghĩa: Tiff (Tag Image File Format) Loại file ảnh bitmap này sử dụng thuật toán nén không mất dữ liệu và chúng ta có thể ghi lại dưới các định dạng file khác nhau, TIF và TIFF được sử dụng rộng rãi Photoshop cho phép chuyển đổi TIF sang định dạng ảnh vector và. .. dưới dạng một ma trận biểu diễn ảnh trong Matlab Cú pháp: A=imread(filename,fmt) Hàm imwrite cho phép lưu một ảnh biểu diễn bằng một ma trận trong Matlab thành một file ảnh dưới một trong các định dạng đã biết Cú pháp: imwrite(A,filename,fmt) Hàm imfinfo dùng để xem các thông số của một file ảnh nào đó Cú pháp: imfinfo(filename,fmt) Các thông tin được cung cấp bởi hàm imfinfo là: filename, filemoddate,... với các ảnh nghệ thuật cao, ảnh tự nhiên, hay ảnh chụp kỹ thuật số • Hình 4 Sự khác nhau giữa ảnh bitmap và ảnh vector 11 Chương II Chuyển đổi định dạng file ảnh 2.1 Các kiểu ảnh trong matlab 2.1.1 Ảnh Index Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận màu (còn gọi là bản đồ màu) map Ma trận dữ liệu có thể thuộc kiểu uint8, uint16 hoặc double Hình 5 Cấu trúc ảnh Index... trong ảnh lớn hơn 4096 Khi đó một ảnh được quan niệm là nhiều mảnh ảnh, và từ điển là một bộ từ điển gồm nhiều từ điển con Cứ hết một mảnh ảnh người ta lại gửi một mã xóa để báo hiệu kết thúc mảnh ảnh cũ, bắt đầu mảnh ảnh mới đồng thời khởi tạo lại từ điển cho mảnh ảnh mới Mã xóa có giá trị là 256 + Từ mã thứ 257 chứa mã kết thúc thông tin Mã này có giá trị là 257 Như chúng ta đã biết, một file ảnh GIF... 20 2.3.3 Định dạng ảnh JPEG Định nghĩa: JPEG viết tắt của Joint Photographic Experts Group, một tổ chức tạo ra định dạng ảnh đồ họa JPEG sử dụng thuật toán nén mất thông tin Ảnh JPEG có tối đa 16 triệu màu (24-bit), cung cấp thông tin định rõ tỷ lệ, mức độ nén JPEG là một trong những phương pháp nén ảnh hiệu quả, có tỷ lệ nén ảnh tới vài chục lần Tuy nhiên ảnh sau khi giải nén sẽ khác với ảnh ban đầu... một số (rất ít) định dạng ảnh trợ giúp tạo hiệu ứng trong suốt b Ảnh vector • Được xác định bằng các đường toàn học, dễ dàng thay đổi, điều chỉnh tỷ lệ, hình dạng và tạo các hiệu ứng trên ảnh • Chất lượng ảnh không phụ thuộc vào độ phân giải, phóng to, thu nhỏ ảnh • Không tạo nền, luôn có mặc định hỗ trợ hiệu ứng trong suốt • Thường tạo các cảnh khung, xương sống ảnh có sẵn qua các hình dạng, đối tượng... một cách chính xác vào vị trí và sự xuất hiện của các yếu tố hình ảnh thậm chí đơn giản 2.5.3 Chuyển đổi định dạng từ ảnh vecto sang bitmap Chuyển đổi các tập tin định dạng vector sang các tập tin định dạng bitmap nói chung là khá dễ dàng Một hình ảnh vector có thể được chuyển vào một bitmap chỉ đơn giản bằng 32 cách chia nó ra thành pixels thành phần và sau đó viết những điểm ảnh vào một mảng trong... mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n Một ảnh BMP nbit có màu Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu) Ảnh BMP 24-bit có chất lượng hình ảnh trung thực nhất • Chiều cao của ảnh (height), cho bởi điểm ảnh (pixel) • Chiều rộng của ảnh (width),... trợ Metadata (EXIF) 2.3.4.1 Đánh giá ảnh lưu định dạng TIF,TIFF Ưu điểm: Đây là định dạng tập tin “không làm mất dữ liệu” của hình ảnh trong quá trình lưu trữ hay nén file Uy tín trong việc bảo lưu chất lượng hình ảnh giúp TIFF là định dạng mẫu mực trong việc lưu trữ tư liệu hình ảnh Nhược điểm: Khuyết điểm duy nhất của file TIFF chính là dung lượng cồng kềnh Do định dạng tập tin này lưu trữ toàn bộ thông