Đăng ký Đăng nhập
Trang chủ Nghiên cứu công cụ xử lý ảnh trong matlab và xây dựng chương trình xử lý và nhận...

Tài liệu Nghiên cứu công cụ xử lý ảnh trong matlab và xây dựng chương trình xử lý và nhận dạng ảnh chụp cắt lớp máy tính

.PDF
91
741
150

Mô tả:

Giới thiệu về các hàm xử lý ảnh, các bộ lọc, các hàm nhiễu, và phép nội suy sử dụng trong Matlab
ĐẠI HỌC LÊ QUÝ ĐÔN BỘ MÔN ĐTYS ______**&**______ Thiết bị chẩn đoán hình ảnh II Đề tài: Nghiên cứu công cụ xử lý ảnh trong Matlab và xây dựng chương trình xử lý và nhận dạng ảnh chụp cắt lớp máy tính Sinh viên thực hiện : Phạm Thị Thu Hương Hoàng Thị Ngọc Linh Vũ Mai Phương Trần Thị Quỳnh Hà Nội, 2016 1 MỤC LỤC I. PHÂN TÍCH CÁC HÀM XỬ LÝ ẢNH TRONG MATLAB ....................... 4 1.1. HỌ CÁC HÀM ĐỌC GHI ẢNH ............................................................................ 4 1.1.1. Hàm imread ............................................................................................ 4 1.1.2. Hàm imwrite ........................................................................................... 4 1.1.3. Hàm imfinfo ............................................................................................ 4 1.1.4. Hàm image .............................................................................................. 5 1.1.5. Hàm imagesc .......................................................................................... 5 1.1.6. Hàm imshow ........................................................................................... 9 1.1.7. Hàm imtool ........................................................................................... 10 1.2. HỌ CÁC HÀM BIẾN ĐỔI ẢNH.......................................................................... 11 1.2.1. Biến đổi Fourier rời rạc (fft) .............................................................. 11 1.2.2. Hàm Radon ........................................................................................... 14 1.3. CÁC HỌ HÀM XỬ LÝ ẢNH .............................................................................. 17 1.3.1. Thay đổi kích thước ảnh ....................................................................... 17 1.3.2. Quay ảnh .............................................................................................. 19 1.3.3. Xén ảnh ................................................................................................. 20 1.3.4. Các biến đổi ảnh thông dụng ............................................................... 22 1.3.5. Các hàm tạo nhiễu cho ảnh .................................................................. 24 1.3.5.1. Nhiễu Salt and Peper ......................................................................... 24 1.3.5.2. Nhiễu Gaussian ................................................................................ 25 1.3.5.3. Nhiễu Speckle ................................................................................... 26 1.4. HỌ CÁC HÀM LỌC ......................................................................................... 27 1.4.1. Bộ lọc lý tưởng ..................................................................................... 27 1.4.1.1. Lọc thông thấp lý tưởng .................................................................... 27 1.4.1.2. ọ t lý tưở ..................................................................... 27 1.4.2. ộ lọc utt th ............................................................................... 28 1.4.2.1. Bộ lọc butterworth thông thấp .......................................................... 28 1.4.2.2. Bộ lọc butterworth thông cao ............................................................ 29 1.4.3. Bộ lọc Gauss ......................................................................................... 29 1.4.4. Tạo bộ lọc 2-D biết t ước ..................................................................... 30 1.4.5. H lọc i ilt .................................................................................... 34 1.4.6. ộ lọc nl ilt ........................................................................................ 36 1.4.7. H lọc c l ilt ...................................................................................... 38 1.4.8. ộ lọc ilt........................................................................................ 40 2 1.4.9. ộ lọc ilt ....................................................................................... 42 1.4.10. Hàm lọc wiener 2 ................................................................................. 43 1.4.11. Hàm lọc trung bình .............................................................................. 44 1.5. HỌ CÁC HÀM NỘI SUY .................................................................................. 45 1.5.1. Cơ sở toán học của phương pháp nội suy ............................................ 45 1.5.1.1. Nội suy Lagrange .............................................................................. 45 1.5.1.2. Nội suy Newton................................................................................. 47 1.5.1.3. Nội suy Gauss ................................................................................... 49 1.5.1.4. Nội suy Sterling................................................................................. 51 1.5.1.5. Nội suy Bessel ................................................................................... 51 1.5.2. Phép nội suy ......................................................................................... 52 II. MỘT SỐ VÍ DỤ MINH HỌA ........................................................................ 56 2.1. VÍ DỤ ........................................................................................................... 56 2.2. CHƯƠNG TRÌNH XỬ LÝ ẢNH.......................................................................... 90 3 I. PHÂN TÍCH CÁC HÀM XỬ LÝ ẢNH TRONG MATLAB 1.1. Họ các hàm đọc ghi ảnh 1.1.1. Hàm imread ă a. Chứ Hàm imre d đọc các file ảnh với bất kì á định dạng ản đã 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. b. Cú pháp A = imread(filename,fmt) [X,map] = imread(A,fmt) Giải thích: - Filename: chuỗi xá định tên file cầ đọc cùng với đường dẫn (nếu file này không nằm trong mụ t ư mục hiện hành). - Fmt: chuỗi cho biết định dạng của ả . VD: ‘bmp’,’ if’,jp ’,… Ví dụ: A=imre d(‘eight.jp ’). 1.1.2. Hàm imwrite a. Chứ ă Hàm write lưu một ảnh biểu diễn bằng một ma trận trong Matlab thành một file ả dưới một tr á đạnh dạng ả đã biết. b. Cú pháp imwrite(A,filename,fmt) Imwrite(X,map,filename,fmt) VD: imwrite(A,’ei t.jp ’). 1.1.3. Hàm imfinfo a. Chứ Dù ă để xem các thông số của một file ả à đó. b. Cú pháp imfinfo(filename,fmt) Cá t ti đượ u ấp bởi àm imfi f là : file me, filem dd te, filesize, format, formatversion, width, height, bitdepth, colortype 4 VD: imfi f r(‘ei .jp ’) Matlab cung cấp hai hàm hiển thị cơ bản là image và imagesc. Ngoài ra trong IPT cũng có hai hàm hiển thị ảnh khác, đó là imview và imshow 1.1.4. Hàm image a. C ứ ă Hiể t ị ì : ả . b. Cú pháp Image(X,Y,C) Giải t í : Hiể t ị ì trụ tọ độ iệ tr ệ trụ ả biểu diễ bởi m trậ C kí à . X, Y là á ve t r xá đị iệ t ướ M x N lê vị trí á pixel C(1,1) và C(M,N) à . VD: load mandrill image(X) coloemap(map). 1.1.5. Hàm imagesc a. C ứ ă Tươ dụ : tự ư àm im e, t à bộ bả đồ màu iệ ại trừ việ dữ liệu ả sẽ đượ iã để sử à . b. Cú pháp imagesc(C) imagesc(x,y,C) imagesc(...,clims) imagesc('PropertyName',PropertyValue,...) h = imagesc(...) Giải t í : Cá ứ ă im es quy m dữ liệu ì l ại bả đồ màu iệ tại và iể t ị ì imagesc (C) sẽ iể t ị C với một k u vự ỉ số s ì ữ ì bả đồ màu iệ tại để xá đị imagesc (x, y, C) sẽ iể t ị C ả . Mỗi p ầ tử ủ C tươ ả . Cá màu sắ ư một ì ủ x và trụ y với ve tơ x và y. Nếu x (1)> x (2) lật trái p ải ặ lê xuố , tươ với đầy đủ á ả . ư một ì ật tr ả iá trị ủ á p ầ tử ủ C là ủ mỗi miế ả điểm. và xá đị ặ y (1)> y (2), ì ứ . Nếu x và y là v ứ ướ , ì á iới ạ ả đượ ả đượ 5 p iê dị s á vị trí quy đị (x, y) s ó trê bê trái ủ ì ả bắt ỉ đị bởi đầu tại (x, y). uẩ imagesc (..., clims) clims và iể t ị C p ạm vi ủ tr á ó ư một ì á iá trị tr C đế p ạm vi ả . lims là một ve t r iá trị dữ liệu tr C. N ữ i yếu tố đó iới ạ iá trị m p ày để đầy đủ á iá trị bả đồ màu iệ tại. imagesc ( 'PropertyName', PropertyValue, ...) là ú p áp ở mứ độ t ấp ủ àm im es . Nó ỉ đị đầu và . Xem t uộ tí ủ ì ỉ ó pr perty ả me/pr perty v lue một d sá ư á đối số á tê t uộ tí và iá trị ọ. h = imagesc (...) trả về xử lý một ì ả đối tượ đồ ọ . c. Ví dụ Bạ ó t ể mở rộ độ p â t ấp để màu đầu tiê và iá trị á xá đị iới ạ nay là 81-by-3, á iải màu sắ tầm tru bằ á với màu sắ tr bả đồ màu bằ uối ù iá trị màu ( lims). Nếu kí t ướ á xạ iá trị ủ bả đồ màu iệ âu lệ clims = [ 10 60 ] imagesc(C,clims) Bả đồ á iá trị dữ liệu tr C để bả đồ màu ư tr ì mi ọ này và các mã sau: 6 Tr ví dụ ày, ì ả bê trái bả đồ để bả đồ màu xám sử dụ á âu lệ : load clown figure subplot(1,2,1) imagesc(X) colormap(gray) axis image title('Default CLim (= [1 81])') Những hình ảnh bên phải có giá trị từ 10 đến 60 có quy mô với đầy đủ các loại bả đồ màu xám sử dụng các câu lệnh: subplot(1,2,2) clims = [10 60]; imagesc(X,clims) colormap(gray) axis image title('CLim = [10 60]') 7 Ví dụ này cho thấy làm thế à để t y đổi hình ảnh bắt đầu từ nguồn gốc đến một vị trí (100, 100) i = imread('eight.tif'); figure; subplot(2,2,1); imagesc(i); axis([0 400 0 400]); colormap(gray); subplot(2,2,2); imagesc(100,100,i); axis([0 400 0 400]); colormap(gray); Cá ì đầu r ư là: 8 Góc trên bên phải của hình ảnh bây giờ là bắt đầu từ (100.100) thay vì ảnh gốc. Đi qu á iá trị vector với hình ảnh quy mô các hình ảnh với kí t ước định số 400-by-400. figure; imagesc(1:400,1:400,i); colormap(gray); 1.1.6. Hàm imshow a. Chứ Cũ ă tạ một đối tượ fi ure. Hàm ims w sẽ tự độ và fi ure để t ể iệ ì đồ ọ t uộ l ại im e và iể t ị ả t iết lập á iá trị ủ á đối tượ trê một im e, xes ả . b. Cú pháp Imshow (I) % iể t ị ả màu xám I. c. Ví dụ 9 Ims w(‘b rd.tif’) % Hiể t ị một ì ả từ file. 1.1.7. Hàm imtool a. C ứ ă Hiể t ị ả trê im e t l, là một m i trườ biểu diễ một số tá vụ xử lý ì ả tí ợp để iể t ị ả và p ổ biế . b. Cú pháp Imtool (I) % Hiể t ị ả Imt l mở r một dụ á tùy ả để iể t ị. ọ trì màu xám I. ụ ì đơ File Ope ả mới tr một trạ t ái trố ặ N ập từ W rksp e để rỗ . Sử ọ một ì c. Ví dụ 10 Imt l(‘b rd.tif’) 1.2. Họ các hàm biến đổi ảnh 1.2.1. Biến đổi Fourier rời rạc (fft) a. Cú pháp Y = fft(X) Y = fft(X,n) Y = fft(X,[],dim) Y = fft(X,n,dim) b. Chứ ă Y = FFT (X) trả về biế đổi Fourier rời rạc (DFT) của vector X, tính toán với một thuật toán biế đổi nhanh Fourier (FFT). Nếu X là một ma trận, FFT trả về biế đổi Fourier của mỗi cột của ma trận. Nếu X là một mả đ iều, FFT hoạt động trên chiều si let đầu tiên. Y = FFT (X, n) trả về DFT n-điểm. Nếu chiều dài của X nhỏ ơ đệm và đu i số 0 theo chiều dài n. Nếu chiều dài của X lớ ơ , X được , trình tự X được 11 cắt ngắn. Khi X là một ma trận, chiều dài của các cột đượ điều chỉnh trong cùng một cách thức. Y = FFT (X, [], dim) và Y = FFT (X, n, dim) áp dụng các hoạt động FFT trê dim kí t ước. c. Ví dụ >> Fs = 1000; % Tần số lấy mẫu T = 1/Fs; % thời gian mẫu L = 1000; % Độ dài của tín hiệu t = (0:L-1)*T; % vector thời gian % Tổng của một tần số hình sin 50Hz và một hình sin 120 Hz x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); y = x + 2*randn(size(t)); % cộng thêm nhiễu hình sin plot(Fs*t(1:50),y(1:50)) title('Signal Corrupted with Zero-Mean Random Noise') xlabel('time (milliseconds)') >> 12 Rất k ó để xá định các thành phần tần số bằng cách nhìn vào các tín hiệu b đầu. Chuyể đổi sang miền tần số, đổi Fourier rời rạc của tín hiệu nhiễu y được tìm thấy bằng cách lấy biế đổi Fourier nhanh (FFT): >> NFFT = 2^nextpow2(L); % Next power of 2 from length of y Y = fft(y,NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2); % Vẽ phổ biê độ một mặt. plot(f,2*abs(Y(1:NFFT/2))) title('Single-Sided Amplitude Spectrum of y(t)') xlabel('Frequency (Hz)') 13 ylabel('|Y(f)|') >> 1.2.2. Hàm Radon a. Cú pháp R = radon(I, theta) [R,xp] = radon(...) Mô tả: R = radon (I, theta) trả về R d đổi R của hình ả ường độ I độ góc theta. 14 Các Radon chuyể đổi là sự phóng chiếu củ một đườ trò đị độ hình ảnh dọc theo ướng ở một ó độ cụ thể. Nếu theta là một v một vector cột chứa Radon biế đổi ma trậ tr ườ ướng, R là t et độ. Nếu theta là một vector, R là một đó mỗi cột là Radon biế đổi cho một trong các góc trong theta. Nếu bạn bỏ qua theta, nó mặ định là 0: 179. [R, xp] = radon (...) trả về một xp vector chứa xuyên tâm tọ độ tươ ứng với mỗi hàng của R. Xuyên tâm tọ độ trả lại trong xp là những giá trị dọc theo x'trụ , đượ định ướng ở độ t et ược từ trục x. Nguồn gốc của cả hai trụ là điểm ảnh trung tâm của hình ả , mà đượ đị ĩ là floor((size(I)+1)/2) Ví dụ, trong một 20-by-30 hình ả , tru tâm điểm ảnh (10,15). b. Ví dụ >> iptsetpref('ImshowAxesVisible','on') I = zeros(100,100); I(25:75, 25:75) = 1; theta = 0:180; [R,xp] = radon(I,theta); imshow(R,[],'Xdata',theta,'Ydata',xp,... 'InitialMagnification','fit') xlabel('\theta (degrees)') ylabel('x''') colormap(hot), colorbar 15 1.2.3. Hàm Phantom a. Cú pháp P = phantom(def, n) P = phantom(E, n) [P, E] = phantom(...) b. Ví dụ >> P = phantom('Modified Shepp-Logan',200); imshow(P) >> 16 1.3. Các họ hàm xử lý ảnh 1.3.1. Thay đổi kích thước ảnh a. Cú pháp B = imresize(A, scale) B = imresize(A, [mrows ncols]) [Y newmap] = imresize(X, map, scale) [...] = imresize(..., method) [...] = imresize(..., parameter, value, ...) b. Mô tả B=imresize(A,m): Trả lại một ả ọ ) sử dụ p ươ ó t ể là một ả 0 và 1, B sẽ p áp ội suy mặ đị ỉ số, ả B lớ A (kí t ướ ì ( e rest – neighbor interpolcation). A đe trắ , RGB ỏ ơ A. Nếu m lớ ấp m lầ ả ặ ả ơ 1, B sẽ lớ ị p â . Nếu m ằm iữ ơ A. 17 B=imresize(A,m,method): Trả lại một ả p ươ p áp ội suy met đượ sử dụ ẳ d. met d là một lớ uỗi ấp m lầ ả ỉ r p ươ p áp ội suy à ạ : ‘ e rest’,’bili e r’,’bi ubi ’. B=imresize(A, [mrows ncols],method): Trả lại một ả đượ ỉ r bởi ve t r [mr ws ls]. Nếu kí với ả và , ả . K i kí ủ ả sẽ bị biế dạ và và p ươ ră ư . Kí bộ lọ mặ đị t ướ đượ t ướ sử dụ là 11×11. T ù ỏ ơ kí là ‘bili e r’ ót ể t ướ tỉ lệ t ướ ặ ‘bi ubi ’, á để iảm iệ ỉ r một t ứ tự k á ấu trú : B=imresize(…,method,n): là một số uyê – x . Nếu =0, àm imresize bỏ qu bướ lọ . T sử dụ r t ấp trướ k i tuyế tí t ướ mặ đị với kí ỉr k ủ ả p áp ội suy đượ sử dụ àm imresize áp đặt một bộ lọ t tượ A sử dụ ỉ r kí ũ ót ể t ướ ủ bộ lọ ỉ r bộ lọ riê ú p áp: B=imresize(…,method,h): Tr đượ trả về bởi á đó là một bộ lọ FIR àm ftr s2, fwi d1, fwi d2 i iều ( ó t ể ặ fs mp2 ). c. Ví dụ >> I = imread('circuit.tif'); J = imresize(I,1.25); imshow(I) figure, imshow(J) >> 18 1.3.2. Quay ảnh a. Cú pháp B = imrotate(A,angle) B = imrotate(A,angle,method) B = imrotate(A,angle,method,bbox) b. Mô tả B=imrotate(A,angle): Qu y ả iều kim đồ ồ, sử dụ p ươ iều kim đồ ồ ãy truyề A một ồ sử dụ p ươ le độ t e p áp ội suy á pixel ầ iá trị âm t m số B=imrotate(A,angle,method): Qu y ả kim đồ ó ỉ r tr B=imrotate(A,angle,method,bbox): Qu y ả số bb x ỉr ộp biê ủ ả ượ ất. Để qu y t e le A một ó p áp ội suy đượ iều le độ t e met d. A một ó trả về. bb x là một iều le độ. T m uỗi ó t ể ậ á iá trị sau: ‘ r p’: Ả t ướ với ả ‘l r B ỉb ồm p ầ tru ): Ả r Bb tâm ủ ả đượ qu y và ó ù kí A se’: ( Mặ đị Hàm imr t te t iết lập iá trị 0 ồm t à bộ ả á pixel đượ qu y và lớ ài biê ủ ả ơ ả A. ố . 19 c. Ví dụ 1.3.3. Xén ảnh a. Cú pháp I = imcrop I2 = imcrop(I) X2 = imcrop(X, map) I = imcrop(h) I2 = imcrop(I, rect) X2 = imcrop(X, map, rect) [...] = imcrop(x, y,...) [I2 re t] = im r p(…) [X,Y,I2,re t] = im r p(…) b. Mô tả Hàm imcrop xén một ảnh theo một hình chữ nhật được chỉ định. I2=imcrop(I) ; X2=imcrop(X,map); 20
- Xem thêm -

Tài liệu liên quan