có sơ đồ nguyên lý, sơ đồ khối, sơ đồ thuật toán và hướng dẫn chi tiết về ỨNG DỤNG MATLAB TRONG xử lý ẢNH số dùng MATLAB .................................................................................................................................................................................
Trang 11.1 Tổng quan về Matlab
1.1.a Khái niệm về Matlab
Matlab là một ngôn ngữ lập trình thực hành bậc cao được sử dụng để giải các bàitoán về kỹ thuật Matlab tích hợp được việc tính toán, thể hiện kết quả, cho phép lậptrình, giao diện làm việc rất dễ dàng cho người sử dụng Dữ liệu cùng với thư viện đượclập trình sẵn cho phép người sử dụng có thể có được những ứng dụng sau đây
Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học thông thường
Cho phép lập trình tạo ra những ứng dụng mới
Cho phép mô phỏng các mô hình thực tế
Phân tích, khảo sát và hiển thị dữ liệu
Với phần mềm đồ hoạ cực mạnh
Cho phép phát triển, giao tiếp với một số phần mềm khác như C++, Fortran
1.1.b Tổng quan về cấu trúc hoạt động của Matlab và các ứng dụng liên quan.
Matlab là một hệ thống tương giao, các phần tử dữ liệu là một mảng (mảng nàykhông đòi hỏi về kích thước) Chúng cho phép giải quyết các vấn đề liên quan đến lậptrình bằng máy tính, đặc biệt sử dụng các phép tính về ma trận hay vector và có thể sửdụng ngôn ngữ C hoặc Fortran lập trình rồi thực hiện ứng dụng lập trình đó bằng cáccâu lệnh gọi từ Matlab Matlab được viết tắt từ chữ “MATrix LABoratory” tức là thưviện về ma trận, từ đó phần mềm Matlab được viết nhằm cung cấp cho việc truy cậpvào phần mềm ma trận một cách dễ dàng, phần mềm ma trận này được phát triển bởicác công trình Linpack và Eispack Ngày nay Matlab được phát triển bởi Lapack vàArtpack tạo nên một nghệ thuật phần mềm cho ma trận
+ Dữ liệu
Dữ liệu của Matlab thể hiện dưới dạng ma trận (hoặc mảng–tổng quát), và có cáckiểu dữ liệu được liệt kê sau đây:
Trang 2 Kiểu đơn single, kiểu này có lợi về bộ nhớ dữ liệu vì nó đòi hỏi ít byte nhớ hơn,kiểu dữ liệu này không được sử dụng trong các phép tính toán học, độ chínhxác kém hơn
Kiểu double kiểu này là kiểu thông dụng nhất của các biến trong Matlab
Kiểu Sparse
Kiểu uint8, uint16
Kiểu char ví dụ ‘Hello’
Các kỹ sư, các nhà nghiên cứu khoa học
Dùng Matlab để tính toán, nghiên cứu tạo ra các sản phẩm tốt nhất trong sảnxuất
+ Toolbox là một công cụ quan trọng trong Matlab
Công cụ này được Matlab cung cấp cho phép bạn ứng dụng các kỹ thuật để phântích, thiết kế, mô phỏng các mô hình
Ta có thể tìm thấy toolbox ở trong mô trường làm việc của
Mạng nơron
Logic mờ
Simulink
1.1.c Hệ thống Matlab
Hệ thống giao diện của Matlab được chia thành 5 phần:
• Môi trường phát triển
Đây là nơi đặt các thanh công cụ, các phương tiện giúp chúng ta sử dụng các lệnh vàcác file, ta có thể liệt kê một số như sau
+ Desktop
+ Command Window
+ Command History
Trang 3+ Browsers for viewinghelp
• Thư viện, các hàm toán học bao gồm các cấu trúc như tính tổng, sin cosin, atan,atan2 etc , các phép tính đơn giản đến các phép tính phức tạp như tính ma trận nghịchđảo, trị riêng, chuyển đổi fourier, laplace, symbolic library
• Ngôn ngữ Matlab Đó là các ngôn ngữ cao về ma trận và mảng, với các dòng lệnh,các hàm, cấu trúc dữ liệu vào, có thể lập trình hướng đối tượng
• Đồ họa trong Matlab Bao gồm các câu lệnh thể hiện đồ hạo trong môi trường 2D và3D, tạo các hình ảnh chuyển động, cung cấp các giao diện tương tác giữa người sử dụng
và máy tính
• Giao tiếp với các ngôn ngữ khác Matlab cho phép tương tác với các ngôn ngữ khácnhư C, Fortran …
1.1.d Làm quen với matlab
Hình 1.1.d Cửa sổ desktop (cửa sổ lớn nhất), và các cửa sổ phụ của nó
Trước tiên để khởi động Matlab bạn click vào biểu tượng Matlab.exe, trên màn hìnhxuất hiện cửa sổ sau (Xem hình vẽ 1.1) Cửa sổ đó chứa các thanh công cụ (Giao diệnngười và máy) cần thiết cho việc quản lý các files, các biến, cửa sổ lệnh, có thể coidesktop là các panel gồm các ô, vùng, quản lý và tác dụng của từng cửa sổ nhỏ đượcquản lý bởi desktop
1.1.e Các cửa sổ Làm việc của Matlab
+ Cửa sổ Command window
Trang 4Là cửa sổ giao tiếp chính của Matlab bởi đây là nơi nhập giá trị các biến, hiểnthị giá trị, tính toán giá trị của biểu thức, thực thi các hàm có sẵn trong thư viện (dạnglệnh), hoặc các hàm (dạng function) do người dùng lập trình ra trong M_files
Các lệnh được nhập sau dấu nhắc ‘ >> ‘, và nếu có sai sót trong quá trình gõ(nhập) lệnh thì hãy nhấn phím Enter cho đến khi nhận được dấu nhắc >> Thực thi lệnhbằng nhấn phím Enter
Gõ các lệnh sau:
>> A= pi/2 ;
>> B= sin(A)
B=1
Hình 1.1.e1 Hình cửa sổ Comman window
Hoặc chương trình soạn thảo trong M-file dưới đây:
% Chuong trinh trong M-file
x= 0:pi/6:2*pi;
y=sin(x);
plot(x, y);
% chuong trinh được lưu với tên file là “ve_sin.m”
+ Cửa sổ command History
Các dòng mà bạn nhập vào trong cửa sổ Command window (các dòng này có thể
là dòng nhập biến, hoặc có thể là dòng lệnh thực hiện hàm nào đó) được giữ lại trongcửa sổ Command History, và cửa sổ này cho phép ta sử dụng lại những lệnh đó bằngcách click chuột lên các lệnh đó hoặc các biến, nếu như bạn muốn sử dụng lại biến đó
Trang 5Khi một chương trình viết trong M-file, thì tuỳ theo ứng dụng cụ thể, tuỳ theongười lập trình mà chương trình có thể viết dưới dạng sau:
Trang 6 Dạng Script file: Tức là chương trình gồm tập hợp các câu lệnh viết dướidạng liệt kê, không có biến dữ liệu vào và biến lấy giá trị ra.
Dạng hàm function: có biến dữ liệu vào và biến ra
1.2 Các hàm chuyển đổi kiểu ảnh
Với các thao tác nhất định, sẽ thật hữu ích khi có thể chuyển đổi ảnh từ dạng nàysang dạng khác Chẳng hạn, nếu ta muốn lọc một ảnh màu được lưu trữ dưới dạng ảnh
số, đầu tiên ta nên chuyển đổi nó thành dạng ảnh RGB Khi ta áp dụng phép lọc tới ảnhRGB, Matlab sẽ lọc giá trị cường độ tương ứng trong ảnh Nếu ta lọc ảnh số Matlab đơngiản chỉ áp đặt phép lọc tới ma trận ảnh số và kết quả sẽ không có ý nghĩa
Chú ý: Khi chuyển đổi một ảnh từ dạng này sang dạng khác, ảnh kết quả có thể khác
ảnh ban đầu Chẳng hạn, nếu ta chuyển đổi một ảnh màu chỉ số sang một ảnh cường độ,kết quả ta sẽ thu được một ảnh đen trắng
Danh sách sau đây sẽ liệt kê các hàm được sử dụng trong việc chuyển đổi ảnh:
+ dither: Tạo một ảnh nhị phân từ một ảnh cường độ đen trắng bằng cách trộn, tạo một
ảnh chỉ số từ một ảnh RGB bằng cách trộng (dither)
+ gray2id: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng
+ grayslice: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng bằng cách đặt ngưỡng + im2bw: Tạo một ảnh nhị phân từ một ảnh cường độ, ảnh chỉ số hay ảnh RGB trên cơ
sở của ngưỡng ánh sáng
+ ind2gray: Tạo một ảnh cường độ đen trắng từ một ảnh chỉ số.
+ ind2rgb: Tạo một ảnh RGB từ một ảnh chỉ số
Trang 7+ mat2gray: Tạo một ảnh cường độ đen trắng từ dữ liệu trong một ma trận bằng cách
lấy tỉ lệ giữ liệu
+ rgb2gray: Tạo một ảnh cường độ đen trắng từ một ảnh RGB.
+ rgb2ind: Tạo một ảnh chỉ số từ một ảnh RGB.
Ta cũng có thể thực hiện các phép chuyển đổi kiểu chỉ sử dụng cú pháp củaMatlab Chẳng hạn , ta có thể convert một ảnh cường độ sang ảnh RGB bằng cáchghép nối 3 phần copy của ma trận ảnh gốc giữa 3 chiều:
RGB=cat(3,I,I,I );
Ảnh RGB thu được có các ma trận đồng nhất cho các mặt phẳng R,G,B vì vậyảnh hiển thị giống như bóng xám
1.3 Giao diện đồ hoạ GUI
1.3.a Khái niệm
Để tiện cho việc sử dụng các ứng dụng hay chương trình mà ta đã viết chúng ta
có thể tạo ra giao diện đồ họa GUI (Graphic User Interface) giữa ngưới dùng và matlab.Trong giao diện này ta có thể xuất dữ liệu dưới hai dạng văn bản và đồ họa Mỗi mộtGUI có thể có một hay nhiều giao diện Việc tạo GUI tạo nên một công cụ nhập xuất dữliệu một cách trực quan, nhanh chóng và rất thuận tiện Ngoài ra có thể dùng GUI đểgiám sát các quá trình, hiển thị các đối tượng…
1.3.b Cách tạo GUI
Có 2 cách để tạo GUI:
+Tạo GUI bằng cách gõ lệnh trực tiếp
+Tạo GUI bằng cách dùng công cụ có sẵn trên Matlab
1.3.c Tạo GUI bằng cách gõ lệnh trực tiếp
Ta gõ lệnh như sau:
Trang 8Hình 1.3.c1: Hình ảnh lệnh tạo GUI
Ta sẽ thu được khung GUI sau:
Hình 1.3.c2: Hình ảnh thu được sau khi dùng lệnh tạo GUI
Trang 91.3.d Tạo GUI bằng cách sử dụng công cụ có sẵn trên Matlab.
Ta gõ guide trong cửa sổ chính của Matlab, sau đó trên cửa sổ chính sẽ xuất hiệntab
Hình 1.3.d: Cửa sổ thiết kế GUISau đó ta tiến hành thiết kế GUI theo ý muốn
Trang 10CHƯƠNG 2:
NÉN ẢNH SỐ,KHÔI PHỤC ẢNH SỐ VÀ
NHẬN DẠNG CẠNH GÓC ẢNH SỐ2.1 NÉN ẢNH SỐ
2.1.1 Các khái niệm về ảnh
+ Điểm ảnh (Picture Element)
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Để xử lýbằng máy tính (số), ảnh cần phải được số hoá Số hoá ảnh là sự biến đổi gần đúng mộtảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và độ sáng(mức xám) Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt ngườikhông phân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh(PEL: Picture Element) hay gọi tắt là Pixel Trong khuôn khổ ảnh hai chiều, mỗi pixelứng với cặp tọa độ (x, y)
Hình 2.1 Hình minh họa của pixelĐịnh nghĩa:
Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặcmàu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợpsao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh
số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh
+ Mức xám của ảnh
Một điểm ảnh (pixel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh và độxám của nó Dưới đây chúng ta xem xét một số khái niệm và thuật ngữ thường dùngtrong xử lý ảnh
1 pixel
Trang 11a) Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán bằnggiá trị số tại điểm đó
Hình 2.2 Hình biểu diễn mức xám của ảnh sốb) Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256 (Mức 256 làmức phổ dụng Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức xám:Mức xám dùng 1 byte biểu diễn: 28=256 mức, tức là từ 0 đến 255)
c) Ảnh đen trắng:
Ảnh đen trắng chỉ bao gồm 2 màu: màu đen và màu trắng (không chứa màukhác) với mức xám ở các điểm ảnh có thể khác nhau Người ta phân mức đen trắng đóthành L mức Nếu sử dụng số bit B=8 bit để mã hóa mức đen trắng (hay mức xám) thì Lđược xác định :
L=2B (trong ví dụ của ta L=28= 256 mức)
Nếu L bằng 2, B=1, nghĩa là chỉ có 2 mức: mức 0 và mức 1, còn gọi là ảnh nhị phân.Mức 1 ứng với màu sáng, còn mức 0 ứng với màu tối Nếu L lớn hơn 2 ta có ảnh đa cấpxám Nói cách khác, với ảnh nhị phân mỗi điểm ảnh được mã hóa trên 1 bit, còn vớiảnh 256 mức, mỗi điểm ảnh được mã hóa trên 8 bit Như vậy, với ảnh đen trắng: nếudùng 8 bit (1 byte) để biểu diễn
mức xám, số các mức xám có thể biểu diễn được là 256 Mỗi mức xám được biểu diễndưới dạng là một số nguyên nằm trong khoảng từ 0 đến 255, với mức 0 biểu diễn chomức cường độ đen nhất và 255 biểu diễn cho mức cường độ sáng nhất
Ảnh nhị phân khá đơn giản, các phần tử ảnh có thể coi như các phần tử logic.Ứng dụng chính của nó được dùng theo tính logic để phân biệt đối tượng ảnh với nềnhay để phân biệt điểm biên với điểm khác
Trang 12d) Ảnh màu: trong khuôn khổ lý thuyết ba màu (Red, Blue, Green) để tạo nên thếgiới màu) trong đó R, G, B là một giá trị xám và được biểu biểu diễn bằng 1 byte, khi
đó các giá trị màu: 28*3=224≈ 16,7 triệu màu
Mỗi màu cũng phân thành L cấp màu khác nhau (thường L=256) Mỗi khoảngnày biểu diễn cho cường độ sáng của một trong các màu chính Do đó, để lưu trữ ảnhmàu người ta có thể lưu trữ từng màu riêng biệt, mỗi màu lưu trữ như một ảnh đa cấpxám Do đó, không gian nhớ dành cho một ảnh màu lớn gấp 3 lần một ảnh đa cấp xámcùng kích cỡ
P(x, y) = (R, G, B)
- Hệ màu CMY: là phần bù của hệ màu
RGB (C, M, Y)=(1, 1, 1)-(R, G, B)Hay
C+R=M+G=Y+B=1
=> Hệ màu này thường được dùng trong máy in
- Hệ màu CMYK: trong đó K là độ đậm nhạt của màu K= min (C, M, Y)
P(x, y) = (C-K, M-K, V-K, K)
+ Ví dụ:
Với (C1, M1, Y1) ta sẽ có K=min (C1, M1, Y1)
vậy CMYK = (C1-K, M1-K, Y1-K, K)
Hình 2.3 Hệ tọa độ RGB
+ Định nghĩa ảnh số
Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gầnvới ảnh thật
Trang 13Một ảnh số giả sử được biểu diễn bằng hàm f(x, y) Tập con các điểm ảnh là S;cặp điểm ảnh có quan hệ với nhau ký hiệu là p, q.
Một số khái niệm nén ảnh số
+Nén dữ liệu (Data Compression)
Nén dữ liệu là quá trình làm giảm lượng thông tin "dư thừa" trong dữ liệu gốc và
do vậy, lượng thông tin thu được sau nén thường nhỏ hơn dữ liệu gốc rất nhiều Với dữliệu ảnh, kết quả thường là 10 : 1 Một số phương pháp còn cho kết quả cao hơn Theokết quả nghiên cứu được công bố gần đây tại viện kỹ thuật Georgie, kỹ thuật nénfractal cho tỉ số nén là 30 trên 1
Ngoài thuật ngữ "nén dữ liệu”, do bản chất của kỹ thuật này nó còn có một sốtên gọi khác như: giảm độ dư thừa, mã hoá ảnh gốc
Từ hơn hai thập kỷ nay, có rất nhiều kỹ thuật nén đã được công bố trên các tàiliệu về nén và các phần mềm nén dữ liệu đã xuất hiện ngày càng nhiều trên thươngtrường Tuy nhiên, chưa có phương pháp nén nào được coi là phương pháp vạn năng(Universel) vì nó phụ thuộc vào nhiều yếu tố và bản chất của dữ liệu gốc Trong chươngnày, chúng ta không thể hy vọng xem xét tất cả các phương pháp nén Hơn nữa, các kỹthuật nén dữ liệu chung đã được trình bày trong nhiều tài liệu chuyên ngành Ở đây,chúng ta chỉ đề cập các phương pháp nén có đặc thù riêng cho dữ liệu ảnh
+Tỷ lệ nén (Compression rate)
Tỷ lệ nén là một trong các đặc trưng quan trọng nhất của mọi phương pháp nén.Tuy nhiên, về cách đánh giá và các kết quả công bố trong các tài liệu cũng cần đượcquan tâm xem xét Nhìn chung, người ta định nghĩa tỷ lệ nén như sau:
Tỷ lệ nén =
1
r x %Với r: là tỷ số nén được định nghĩa: r = kích thước dữ liệu gốc/ kích thước dữ liệu thuđược sau nén Như vậy hiệu suất của nén là: (1-tỷ lệ nén) x %
Khi nói đến kết quả nén, chúng ta dùng tỷ số nén, thí dụ như 10 trên 1 có nghĩa
là dữ liệu gốc là 10 phần sau khi nén chỉ có 1 phần
Tuy nhiên, cũng phải thấy rằng những số đo của một phương pháp nén chỉ cógiá trị với chính sự nén đó, vì rằng hiệu quả của nén còn phụ thuộc vào kiểu dữ liệuđịnh nén Tỷ lệ nén cũng chỉ là một trong các đặc trưng cơ bản của phương pháp nén.Nhiều khi tỷ lệ nén cao cũng chưa thể nói rằng phương pháp đó là hiệu quả hơn các
Trang 14phương pháp khác, vì còn các chi phí khác như thời gian, không gian và thậm chí cả độphức tạp tính toán nữa Thí dụ như nén phục vụ trong truyền dữ liệu: vấn đề đặt ra làhiệu quả nén có tương hợp với đường truyền không
Cũng cần phân biệt nén dữ liệu với nén băng truyền Mục đích chính của nén làgiảm lượng thông tin dư thừa và dẫn tới giảm kích thước dữ liệu Tuy vậy, đôi khi quátrình nén cũng làm giảm băng truyền tín hiệu số hoá thấp hơn so với truyền tín hiệutương tự
+ Các loại dư thừa dữ liệu
Như trên đã nói, nén nhằm mục đích giảm kích thước dữ liệu bằng cách loại bỏ
dư thừa dữ liệu Việc xác định bản chất các kiểu dư thừa dữ liệu rất có ích cho việc xâydựng các phương pháp nén dữ liệu khác nhau Nói một cách khác, các phương pháp nén
dữ liệu khác nhau là do sử dụng các kiểu dư thừa dữ liệu khác nhau Nên có 4 kiểu dưthừa chính:
a Sự phân bố ký tự
Trong một dãy ký tự, có một số ký tự có tần suất xuất hiện nhiều hơn một số dãykhác Do vậy, ta có thể mã hoá dữ liệu một cách cô đọng hơn Các dãy ký tự có tần suấtcao được thay bởi một từ mã nhị phân với số bít nhỏ; ngược lại các dãy có tần suất thấp
sẽ được mã hoá bởi từ mã có nhiều bít hơn Đây chính là bản chất của phương pháp mãhoá Huffman
b Sự lặp lại của các ký tự
Trong một số tình huống như trong ảnh, 1 ký hiệu (bit "0" hay bit "1") được lặp
đi lặp lại nhiều lần Kỹ thuật nén dùng trong trường hợp này là thay dãy lặp đó bởi dãymới gồm 2 thành phần: số lần lặp và kí hiệu dùng để mã Phương pháp mã hoá kiểu này
có tên là mã hoá loạt dài RLC (Run Length Coding)
c Những mẫu sử dụng tần suất
Có thể có dãy ký hiệu nào đó xuất hiện với tần suất tương đối cao Do vậy, cóthể mã hoá bởi ít bit hơn Đây là cơ sở của phương pháp mã hoá kiểu từ điển doLempel-Ziv đưa ra và có cải tiến vào năm 1977, 1978 và do đó có tên gọi là phươngpháp nén LZ77, LZ78 Năm 1984, Terry Welch đã cải tiến hiệu quả hơn và đặt tên làLZW (Lempel-Ziv- Welch)
d Độ dư thừa vị trí