27/03/2013 Các hàm xử lý ảnh matlab UserName •••••••• Remember Me Login Forgot password? || Register ! Viet Nam HOME Trang Chủ DANH MUC SAN PHAM Shop PRODUCTS R&D LABS Nghiên Cứu VIDEO DEMO H-Lab On Youtube CONTACT Liên Hệ Các hàm xử lý ảnh matlab SATURDAY, 13 AUGUST 2011 17:02 ADMINISTRATOR Development Kit Peripheral Modules English 14 likes dislikes There are no translations available ROBOCON Equipments Trong phần tìm hiểu hàm xử lý ảnh matlab Như biết, Programmer/Debugger matlab ngôn ngữ mạnh hỗ trợ tốt thao tác làm việc ảnh Vì việc sử dụng matlab cho ứng dụng xử lý ảnh gần lựa chọn hàng đầu cho muốn thực Education Robot thuật toán xử lý phần mềm Products Xem Phần : Giới thiệu matlab xử lý ảnh DC Servo Motor Phụ kiện - Spare part All Các kiểu ảnh Matlab R&D LABS a) Ảnh định số (Indexed Images) FPGA/ASIC RESEARCH double Ma trận đồ màu mảng mx3 kiểu double bao gồm giá trị dấu phẩy động nằm Mỗi hàng đồ DSP RESEARCH màu Màu sắc pixel ảnh tính tốn cách sử dụng giá trị tương ứng X ánh xạ tới giá trị số map Giá trị MCU APPLICATION Một ảnh số bao gồm ma trận liệu X ma trận đồ màu map Ma trận liệu có kiểu thuộc lớp uint8, uint16 kiểu giá trị mà: red, green blue màu đơn Một ảnh số sử dụng ánh xạ trực tiếp giá trị pixel ảnh tới giá trị đồ hàng đầu tiên, giá trị hàng thứ hai đồ màu … Một đồ màu thường chứa với ảnh số tự động nạp với ảnh sử dụng hàm imread để đọc ảnh Tuy EMBEDDED SYSTEM nhiên, ta không bị giới hạn sử dụng đồ màu mặc định, ta sử dụng đồ màu AUTOMATIC SYSTEMS b) Ảnh cường độ (Intensity Images) SUPPORT chứa ảnh cường độ ma trận đơn, với phần tử ma trận tương ứng với pixel ảnh Ma trận thuộc lớp Một ảnh cường độ ma trận liệu ảnh I mà giá trị đại diện cho cường độ số vùng ảnh Matlab double, uint8 hay uint16 Trong ảnh cường độ lưu với đồ màu, Matlab sử dụng đồ màu để hiển thị chúng ROBOCON BASIC MCU/DSP/FPGA NGHIÊN CỨU / ĐỀ TÀI DOCUMENT DOWNLOAD COMMENT LATEST file testbench viết riêng fi Những phần tử ma trận cường độ đại diện cho cường độ khác độ xám Những điểm có cường độ thường đại diện màu đen cường độ 1,255 65535 thường đại diện cho cường độ cao hay màu trắng c) Ảnh nhị phân (Binary Images) Trong ảnh nhị phân, pixel chứa hai giá trị nhị phân Hai giá trị tương ứng với bật tắt (on off) Một ảnh nhị phân lưu trữ mảng logic d) Ảnh RGB (RGB Images) Một ảnh RGB - thường gọi true-color, lưu trữ Matlab dạng mảng liệu có kích thước chiều mxnx3 định nghĩa giá trị màu red, green blue cho pixel riêng biệt Ảnh RGB không sử dụng palette Màu pixel định kết hợp giá trị R, G, B (Red, Green, Blue) lưu trữ mặt phẳng màu vị trí pixel Định dạng file Anh ơi, code đồ hoạ lưu trữ ảnh RGB giống ảnh 24 bits R, G, B chiếm tương ứng bit Điều cho phép nhận 16 triệu gộp t màu khác Minh da updated lai Một mảng RGB thuộc lớp double, uint8 uint16 Trong mảng RGB thuộc lớp double, thành phần màu có giá trị roi nha Một pixel mà thành phần màu (0, 0, 0) hiển thị với màu đen pixel mà thành phần màu (1, 1, ) ad lam on check lai hiển thị với màu trắng Ba thành phần màu pixel lưu trữ với chiều thứ mảng liệu Chẳng hạn, giá trị link nhe, minh download ko dc vay ?? màu R, G, B pixel (10, 5) lưu trữ RGB(10, 5, 1), RGB(10, 5, 2) RGB(10, 5, 3) tương ứng Để tính tốn màu sắc pixel hàng cột chẳng hạn, ta nhìn vào ba giá trị lưu trữ (2, 3, 1:3) Giả sử (2, 3, 1) chứa giá trị 0.5176; (2, 3, 2) chứa giá trị 0.1608 (2, 3, 3) chứa giá trị 0.0627 màu sắc pixel (2, 3) (0.5176, 0.1608, 0.0627) Các hàm xử lý ảnh Matlab a) Đọc ghi liệu ảnh Đọc ảnh đồ hoạ - Hàm imread đọc ảnh từ định dạng trợ giúp chiều sâu bit trợ giúp Hầu hết file ảnh sử dụng bit để chứa giá trị pixel Khi chúng đọc vào nhớ, Matlab chứa chúng dạng uint8 Với file trợ giúp 16 bít liệu, PNG TIFF, Matlab chứa chúng dạng uint16 Chú ý: Với ảnh số, imread luôn đọc đồ màu vào chuỗi thuộc lớp double, chí mảng ảnh tự thuộc lớp uint8 hay uint16 - Chẳng hạn, đoạn mã sau đọc ảnh RGB vào không gian làm việc Matlab lưu biến RGB hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 1/13 27/03/2013 Các hàm xử lý ảnh matlab RGB=imread(‘football.jpg’); Trong ví dụ này, imread nhận định dạng file để sử dụng từ tên file Ta định dạng file tham số hàm imread Matlab trợ giúp nhiều định dạng đồ hoạ thông dụng chẳng hạn: BMP, GIF, JPEG, PNG, TIFF … Để biết thêm kiểu gọi hàm tham số truyền vào, xem trợ giúp online Matlab Đọc nhiều ảnh từ file đồ hoạ - Matlab trợ giúp số định dạng file đồ hoạ chẳng hạn như: HDF TIFF, chúng chứa nhiều ảnh Theo mặc định, imread trợ giúp ảnh file Để nhập thêm ảnh từ file, sử dụng cú pháp trợ giúp định dạng file Chẳng hạn, sử dụng với TIFF, ta sử dụng giá trị số với imread để ảnh mà ta muốn nhập vào Ví dụ sau đọc chuỗi 27 ảnh từ file TIFF lưu ảnh mảng chiều Ta sử dụng hàm iminfo để xem ảnh lưu trữ file: mri = uint8(zeros(128,128,1,27)); % preallocate 4-D array for frame=1:27 [mri(:,:,:,frame),map] = imread('mri.tif',frame); End - Khi file chứa nhiều ảnh theo số kiểu định chẳng hạn theo thứ tự thời gian, ta lưu ảnh Matlab dạng mảng chiều Tất ảnh phải có kích thước Ghi ảnh đồ hoạ - Hàm imwrite ghi ảnh tới file đồ hoạ định dạng trợ giúp Cấu trúc imwrite yêu cầu biến ảnh tên file Nếu ta gộp phần mở rộng tên file, Matlab nhận định dạng mong muốn từ Ví dụ sau tải ảnh số X từ file Map với đồ màu kết hợp với map sau ghi ảnh xuống file bitmap load clown whos Name Size X 200x320 caption 2x1 Bytes Class 512000 double array char array map 81x3 1944 double array Grand total is 64245 elements using 513948 bytes imwrite(X,map,'clown.bmp') Chỉ định dạng phụ - Tham số đặc biệt - Khi sử dụng imwrite với số định dạng đồ hoạ, ta tham số phụ Chẳng hạn, với định dạng PNG ta độ sâu bit tham số phụ Ví dụ sau chi ảnh cường độ I với file ảnh bit PNG imwrite(I,'clown.png','BitDepth',4 ); H-LAB ON YOUTUBE - Để biết thêm cấu trúc khác hàm xem phần trợ giúp trực tuyến Matlab Đọc ghi ảnh nhị phân theo định dạng bit - Trong số định dạng file, ảnh nhị phân lưu định dạng bit Nếu định dạng file trợ giúp nó, Matlab ghi ảnh nhị phân ảnh bit theo mặc định Khi ta đọc ảnh nhị phân với định dạng bit, Matlab đại diện khơng gian làm việc mảng lơgic - Ví dụ sau đọc ảnh nhị phân ghi dạng file TIFF Bởi định dạng TIFF trợ giúp ảnh bit, file ghi lên đĩa theo định dạng bit: BW = imread('text.png'); imwrite(BW,'test.tif'); VISITOR COUNTER Để kiểm tra chiều sâu bit file test.tif, gọi hàm iminfo kiểm tra trường BitDepth nó: Hơm 2988 Hơm qua 5480 info = imfinfo('test.tif');info.BitDepth ans =1 Tháng 172206 Chú ý: Khi ghi file nhị phân, Matlab thiết lập trường ColorType thành ‘grayscale’ Tất 197974 Xem lớp lưu trữ file We have: 28 guests online Chrome 25.0.1364.172, Windows Hôm nay: Mar 27, 2013 Visitors Counter - Hàm imwrite sử dụng luật sau để định lớp lưu trữ sử dụng ảnh kết quả: + logical: Nếu định dạng ảnh (Output Image) rõ trợ giúp ảnh bit, hàm imwrite tạo file ảnh bit Nếu định dạng ảnh rõ không trợ giúp ảnh bit (như JPEG), hàm imwrite chuyển ảnh tới ảnh thuộc lớp uint8 + uint8: Nếu định dạng ảnh rõ trợ giúp ảnh bit, hàm imwrite tạo ảnh bit hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 2/13 27/03/2013 Các hàm xử lý ảnh matlab + uint16: Nếu định dạng ảnh rõ trợ giúp ảnh 16 bit (PNG TIFF), hàm imwrite tạo ảnh 16 bit Nếu định dạng ảnh không trợ giúp ảnh 16 bit, hàm chuyển đổi liệu ảnh tới lớp uint8 tạo ảnh bit + double: Matlab chuyển liệu ảnh tới dạng uint8 tạo ảnh bit hầu hết file ảnh sử dụng định dạng bit Truy vấn file đồ hoạ - Hàm imfinfo cho phép ta nhận thông tin file ảnh trợ giúp toolbox Cú pháp: imfinfo(filename,fmt) Các thông tin cung cấp hàm imfinfo là: filename, filemodedate, filesize, format, formatversion, width, height, bitdepth, colortype … Thông tin mà ta nhận phụ thuộc vào kiểu file ln bao gồm thông tin sau: Tên file ảnh Định dạng file ảnh Số version định dạng file Ngày sửa đổi file gần Kích thước file tính theo byte AI ĐANG ONLINE Now online: 25 guests Latest members: Chiều rộng ảnh tính theo pixel Chiều cao ảnh tính theo pixel Số lượng bít pixel Kiểu ảnh: RGB, số … b) Hiển thị ảnh Dùng hàm imview xlhwbqvom Nguyen Trung Thanh Total members: 1527 - Để hiển thị ảnh sử dụng hàm imview, dùng hàm imview, rõ ảnh mà ta muốn hiển thị Ta sử dụng imview để hiển thị ảnh mà nhập vào không gian làm việc Matlab moonfig = imread('moon.tif'); imview(moonfig); RSS Ta định tên file ảnh ví dụ sau: Feed Entries imview('moon.tif'); - File ảnh phải có mặt thư mục đường dẫn Matlab C ấu trúc hữu ích cho việc quét qua nhiều ảnh Tuy nhiên, lưu ý, sử dụng cấu trúc này, liệu ảnh không lưu không gian làm việc Matlab - Nếu ta gọi hàm imview mà không kì tham số nào, hiển thị hộp chọn file cho phép ta tên file muốn hiển thị Xem nhiều ảnh - Nếu ta file mà chứa nhiều ảnh, hàm imview hiển thị ảnh file Để xem tất ảnh file, sử dụng hàm imread để nhập ảnh vào không gian làm việc Matlab sau gọi hàm imview nhiều lần để hiển thị ảnh riêng biệt Dùng hàm imshow - Để xem ảnh, ta sử dụng hàm imshow thay cho imview Ta sử dụng imshow để hiển thị ảnh nhập vào không gian làm việc ví dụ sau: moon = imread('moon.tif'); imshow(moon); Ta tên file ảnh tham số truyền vào cho hàm ví dụ sau: imshow('moon.tif'); Khi sử dụng cấu trúc liệu ảnh không nhập vào không gian làm việc Tuy nhiên, ta mang ảnh vào khơng gian làm việc cách sử dụng hàm getimage Hàm nhận liệu ảnh từ handle đối tượng ảnh C hẳng hạn: moon = getimage; Sẽ gán liệu ảnh từ moon.tif vào biến moon c) Các hàm chuyển đổi kiểu ảnh - Với thao tác định thật hữu ích chuyển đổi ảnh từ dạng sang dạng khác C hẳng hạn, ta muốn lọc màu ảnh lưu trữ dạng ảnh số ta nên chuyển đổi thành dạng ảnh RGB Khi ta áp dụng phép lọc tới ảnh RGB, Matlab lọc giá trị cường độ ảnh tương ứng Nếu ta cố gắng lọc ảnh số, Matlab đơn giản áp đặt phép lọc tới ma trận ảnh số kết khơng có ý nghĩa C hú ý: Khi chuyển đổi ảnh từ dạng sang dạng khác, ảnh kết khác ảnh ban đầu C hẳng hạn, ta chuyển đổi ảnh màu số sang ảnh cường độ, kết ta thu ảnh đen trắng - Danh sách sau liệt kê hàm sử dụng việc chuyển đổi kiểu ảnh: hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 3/13 27/03/2013 Các hàm xử lý ảnh matlab dither: Tạo ảnh nhị phân từ ảnh cường độ đen trắng cách trộn, tạo ảnh số từ ảnh RGB cách trộn (dither) gray2id: Tạo ảnh số từ ảnh cường độ đen trắng grayslice: Tạo ảnh số từ ảnh cường độ đen trắng cách đặt ngưỡng im2bw: Tạo ảnh nhị phân từ ảnh cường độ, ảnh số hay ảnh RGB sở ngưỡng ánh sáng ind2gray: Tạo ảnh cường độ đen trắng từ ảnh số ind2rgb: Tạo ảnh RGB từ ảnh số mat2gray: Tạo ảnh cường độ đen trắng từ liệu ma trận cách lấy tỉ lệ giữ liệu rgb2gray: Tạo ảnh cường độ đen trắng từ ảnh RGB rgb2ind: Tạo ảnh số từ ảnh RGB - Ta thực phép chuyển đổi kiểu sử dụng cú pháp Matlab C hẳng hạn, ta chuyển đổi ảnh cường độ sang ảnh RGB cách ghép nối phần copy ma trận ảnh gốc chiều: RGB=cat(3,I,I,I ); - Ảnh RGB thu có ma trận đồng cho mặt phẳng R, G, B ảnh hiển thị giống bóng xám - Thêm vào cơng cụ chuyển đổi chuẩn nói trên, có số hàm mà trả lại kiểu ảnh khác phần thao tác mà chúng thực Chuyển đổi không gian màu - Toolbox xử lý ảnh biểu diễn màu sắc giá trị RGB ( trực tiếp ảnh RGB gián tiếp ảnh số ) Tuy nhiên, có phương pháp khác cho việc biểu diễn màu sắc C hẳng hạn, màu đại diện giá trị hue, saturation giá trị thành phần (HSV) C ác phương pháp khác cho việc biểu diễn màu gọi không gian màu - Toolbox cung cấp tập thủ tục để chuyển đổi không gian màu C ác hàm xử lý ảnh tự chúng coi liệu màu sắc dạng RGB nhiên, ta xử lý ảnh mà sử dụng không gian màu khác cách chuyển đổi sang RGB sau chuyển đổi ảnh xử lý trở lại không gian màu ban đầu d) Chuyển đổi định dạng file ảnh - Để thay đổi định dạng đồ hoạ ảnh, sử dụng hàm imread để đọc ảnh sau lưu với hàm imwrite đồng thời định dạng tương ứng - Để minh hoạ, ví dụ sau sử dụng hàm imread để đọc file BMP vào khơng gian làm việc.Sau đó, hàm imwrite lưu ảnh định dạng PNG bitmap = imread('mybitmap.bmp','bmp'); imwrite(bitmap,'mybitmap.png','png'); e) Số học ảnh - Số học ảnh ứng dụng phép toán số học chuẩn như: cộng, trừ, nhân, chia lên ảnh Số học ảnh sử dụng nhiều xử lý ảnh bước ban đầu lẫn thao tác phức tạp C hẳng hạn, trừ ảnh sử dụng để phát khác hai nhiều ảnh cảnh vật - Ta thực số học ảnh sử dụng toán tử số học Matlab Toolbox xử lý ảnh bao gồm tập hợp hàm ứng dụng phép toán số học tất số không lấp đầy Hàm số học toolbox chấp nhận kiểu liệu số bao gồm uint8, uint16 hay double trả lại ảnh kết định dạng C ác hàm thực phép toán với độ xác kép phần tử khơng chuyển đổi ảnh tới giá trị xác kép không gian làm việc Matlab Sự tràn số điều khiển tự động Hàm cắt bỏ giá trị trả để vừa với kiểu liệu Luật cắt bỏ số học ảnh - Kết số học nguyên dễ dàng tràn số dùng cho lưu trữ C hẳng hạn, giá trị cực đại ta lưu trữ uint8 255 C ác phép tốn số học trả giá trị phân số - không biểu diễn chuỗi số nguyên - C ác hàm số học ảnh sử dụng luật cho số học nguyên: + Giá trị vượt khoảng kiểu số nguyên bị cắt bỏ tới khoảng + Giá trị phân số làm trịn C hẳng hạn, liệu có kiểu uint8, kết trả lớn 255 ( bao gồm Inf ) gán 255 Lời gọi lồng tới hàm số học ảnh - Ta sử dụng hàm số học ảnh kết hợp để thực chuỗi phép toán C hẳng hạn để tính giá trị trung bình hai ảnh: C =(A+B) /2 Ta nhập vào sau: I = imread('rice.png'); I2 = imread('cameraman.tif'); K = imdivide(imadd(I,I2), 2); % not recommended hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 4/13 27/03/2013 Các hàm xử lý ảnh matlab - Khi sử dụng với kiểu uint8 hay uint16, hàm số học cắt kết trước truyền cho hàm thiếp theo Sự cắt bỏ giảm đáng kể lượng thông tin ảnh cuối Một cách làm tốt để thực chuỗi tính tốn sử dụng hàm imlincomb Hàm thi hành tất phép toán số học kết hợp tuyến tính độ xác kép cắt bỏ kết cuối cùng: K = imlincomb(.5,I,.5,I2); % recommended Biến đổi không gian ảnh Biến đổi không gian ảnh thực ánh xạ vị trí pixel ảnh vào với pixel ảnh a) Bảng thuật ngữ Aliasing : Răng cưa - xuất giảm kích thước ảnh Khi kích thước ảnh bị giảm, pixel gốc bị lấy mẫu giảm để tạo pixel Aliasing xảy kết việc giảm kích thước ảnh thường xuất dạng bậc thang ( đặc biệt ảnh có độ tương phản cao ) Antialiasing : C ác biện pháp chống cưa cho ảnh Bicubic interpolation : Giá trị pixel tính tốn từ giá trị trung bình 4x4 pixel lân cận Bilinear interpolation : Gía trị pixel tính tốn từ giá trị trung bình 2x2 pixel lân cận Geometric operation : Một thao tác sửa đổi quan hệ hình học gữa pixel ảnh C hẳng hạn thay đổi kích thước ảnh, quay ảnh xén ảnh Interpolation : Quá trình sử dụng để ước lượng giá trị ảnh vị trí pixel Nearest-neighbor interpolation : C ác giá trị pixel gán giá trị pixel nằm vùng gần pixel b) Nội suy Nội suy trình sử dụng để ước lượng giá trị ảnh vị trí pixel C hẳng hạn, ta thay đổi kích thước ảnh, chứa nhiều pixel ảnh gốc, toolbox sử dụng nội suy để tính giá trị cho pixel thêm vào Hàm imresize imrotate sử dụng nội suy hai chiều để thực thao tác Hàm improfile sử dụng nội suy hoá Các phương pháp nội suy - Toolbox sử lý ảnh cung cấp cách nội suy hoá + Nội suy pixel gần ( nearest –neighbor interpolation ) + Nội suy song tuyến tính ( Bilinear interpolation ) + Nội suy song khối ( Bicubic interpolation ) C ác phương pháp nội suy làm việc theo cách giống Trong trường hợp, để tính giá trị pixel nội suy, chúng tìm điểm ảnh mà pixel nằm Sau đó, chúng gán giá trị tới pixel cách tính tốn giá trị trung bình có trọng số số pixel lân cận Trọng số dựa sở khoảng cách tới điểm xét - C ác phương pháp khác tập pixel mà chúng xem xét: + Với nội suy pixel gần nhất: pixel gán giá trị pixel gần C ác pixel khác khơng xem xét + Nội suy song tuyến tính, giá trị pixel giá trị trung bình theo trọng số 2x2 pixel lân cận + Nội suy song khối: giá trị pixel trung bình có trọng số 4x4 pixel lân cận Số lượng pixel xem xét ảnh hưởng đến độ phức tạp tính tốn Vì vậy, phương pháp song tuyến tính nhiều thời gian phương pháp thứ phương pháp song khối nhiều thời gian song tuyến tính Tuy nhiên, số lượng pixel lớn hơn, độ xác tốt Kiểu ảnh - C ác hàm sử dụng tuyến tính yêu cầu tham số phương pháp nội suy Với hầu hết hàm, phương pháp mặc định sử dụng nearest-neighbor interpolation Phương pháp tạo kết chấp nhận cho hầu hết ảnh phương pháp thích hợp với ảnh số Với ảnh cường độ hay RGB, nhiên ta thường kiểu song tuyến tính song khối phương pháp cho kết tốt Với ảnh RGB, nội suy thường thực mặt phẳng R,B,G cách riêng biệt Với ảnh nhị phân, nội suy gây ảnh hưởng mà ta nhận thấy Nếu sử dụng nội suy song tuyến tính song khối, giá trị tính tốn cho pixel ảnh khơng hồn tồn Ảnh hưởng ảnh kết phụ thuộc vào lớp ảnh vào: + Nếu lớp ảnh vào double, ảnh ảnh đen trắng thuộc lớp double Ảnh không ảnh nhị phân bao gồm giá trị khác + Nếu ảnh vào uint8, ảnh ảnh nhị phân thuộc lớp uint8 Giá trị pixel nội suy làm tròn thành Vì , ảnh thuộc lớp uint8 Nếu sử dụng phương pháp nearest-neighbor interpolation, ảnh ảnh nhị phân giá trị pixel nội suy lấy trực tiếp từ ảnh vào c) Thay đổi kích thước ảnh hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 5/13 27/03/2013 Các hàm xử lý ảnh matlab - Để thay đổi kích thước ảnh, sử dụng hàm imresize Sử dụng hàm ta có thể: + C hỉ kích thước ảnh kết + C hỉ phương pháp nội suy sử dụng + C hỉ lọc sử dụng để ngăn ngừa tượng cưa Chỉ kích thước cho ảnh kết - Sử dụng hàm imresize, ta chó thể kích thước ảnh kết theo hai cách: + Bằng cách hệ số phóng đại sử dụng ảnh + Bằng cách chiều ảnh kết Sử dụng hệ số phóng đại ảnh - Để mở rộng ảnh, hệ số phóng đại lớn Để thu nhỏ ảnh, hệ số phóng đại nằm C hẳng hạn, lệnh sau tăng kích thước ảnh I lên 1.25 lần: Hình Ảnh trước sau imresize I = imread('circuit.tif'); J = imresize(I,1.25); imshow(I) figure, imshow(J) Chỉ định kích thước ảnh - Ta kích thước ảnh cách truyền véc tơ chứa số lượng hàng cột ảnh sau Những lệnh sau tạo ảnh Y với 100 hàng 150 cột Y = imresize(X,[100 150]) C hú ý: Nếu kích thước khơng có tỉ lệ với ảnh vào, ảnh bị biến dạng Chỉ định phương pháp nội suy sử dụng - Theo mặc định, hàm imresize sử dụng phương pháp nội suy pixel gần (nearest – neighbor interpolation) để tính giá trị pixel ảnh Tuy nhiên, ta định phương pháp nội suy khác Bảng sau liệt kê phương pháp nội suy trợ giúp theo thứ tự độ phức tạp Giá trị tham số Phương pháp nội suy ‘nearest’ Nội suy phixel gần ( mặc định ) ‘bilinear’ Nội suy song tuyến tính ‘biculic’ Nội suy song khối Trong ví dụ sau, hàm imresize sử dụng phương pháp nội suy song tuyến tính: Y=imresize(X, [100 150],’bilinear’); Sử dụng lọc để ngăn chặn tượng cưa - Việc giảm kích thước (hình học) ảnh gây ảnh hưởng định lên ảnh chẳng hạn tượng xuất cưa biên ảnh Điều thông tin ln bị ta giảm kích thước ảnh Răng cưa xuất gợn sóng ảnh sau - Khi giảm kích thước ảnh sử dụng nội suy song tuyến tính song khối, hàm imresize tự động áp đặt lọc hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 6/13 27/03/2013 Các hàm xử lý ảnh matlab thông thấp lên ảnh trước nội suy Điều để giảm ảnh hưởng cưa ảnh Ta kích thước lọc lọc khác thay C hú ý: Thậm chí sử dụng lọc thông thấp, chất lượng ảnh bị ảnh hưởng thơng tin ln bị q trình nội suy - Hàm imresize không áp đặt lọc thông thấp lên ảnh phương pháp nội suy pixel gần sử dụng Phương pháp nội suy ban đầu sử dụng với ảnh số lọc thơng thấp khơng thích hợp cho kiểu ảnh - Ta lọc tự tạo thay cho lọc có sẵn Hàm imresize C ú pháp hàm sau: B B B B B = = = = = imresize(A,m) imresize(A,m,method) imresize(A,[mrows ncols],method) imresize( ,method,n) imresize( ,method,h) Diễn giải + B=imresize(A,m): Trả lại ảnh B lớn gấp m lần ảnh A (kích thước hình học) sử dụng phương pháp nội suy mặc định (nearest - neighbor interpolcation) A ảnh số, ảnh đen trắng, RGB ảnh nhị phân Nếu m nằm 1, B nhỏ A Nếu m lớn 1, B lớn A + B=imresize(A,m,method): Trả lại ảnh lớn gấp m lần ảnh A sử dụng phương pháp nội suy method method chuỗi phương pháp nội suy sử dụng chẳng hạn: ‘nearest’,’bilinear’,’bicubic’ + B=imresize(A, [mrows ncols],method): Trả lại ảnh với kích thước vector [mrows ncols] Nếu kích thước khơng tỉ lệ với ảnh vào, ảnh bị biến dạng Khi kích thước ảnh nhỏ kích thước ảnh vào phương pháp nội suy sử dụng ‘bilinear’ ‘bicubic’, hàm imresize áp đặt lọc thơng thấp trước tuyến tính hố để giảm tượng cưa Kích thước mặc định 11x11 Ta thứ tự khác cho lọc mặc định sử dụng cấu trúc: B=imresize(…,method,n): n số nguyên kích thước lọc – nxn Nếu n=0, hàm imresize bỏ qua bước lọc Ta lọc riêng sử dụng cú pháp: B=imresize(…,method,h): Trong h lọc FIR hai chiều ( trả hàm ftrans2, fwind1, fwind2 fsamp2 ) d) Quay ảnh - Để quay ảnh, sử dụng hàm imrotate Hàm chấp nhận hai tham số chính: + Ảnh cần quay + Góc quay - Góc quay tính theo độ Nếu ta giá trị dương, hàm imrotate quay ảnh theo chiều ngược chiều kim đồng hồ Nếu giá trị âm, hàm quay ảnh theo chiều kim đồng hồ Ví dụ sau quay ảnh 35 độ theo chiều ngược chiều kim đồng hồ: J=imrotate(I,35 ) ; - Một số tham số tuỳ chọn ta truyền vào cho hàm bao gồm: + Phương pháp nội suy sử dụng + Kích thước ảnh Chỉ định phương pháp nội suy sử dụng - Theo mặc định, hàm imrotate sử dụng phương pháp nội suy thứ (nearest-neighbor interpolation) để tính giá trị pixel ảnh Tuy nhiên, ta phương pháp nội suy khác như: ‘bilinear ‘,’bicubic’ Ví dụ sau quay ảnh 35 độ ngược chiều kim đồng hồ sử dụng nội suy song tuyến tính: I = imread('circuit.tif'); J = imrotate(I,35,'bilinear'); imshow(I) figure, imshow(J) hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 7/13 27/03/2013 Các hàm xử lý ảnh matlab Hình Ảnh trước sau imrotate Chỉ định kích thước ảnh Theo mặc định, hàm imrotate tạo ảnh đủ lớn để bao gồm tồn pixel ảnh gốc C ác pixel nằm biên ảnh gốc gán giá trị thể màu đen ảnh Nếu ta chuỗi ‘crop’ tham số, hàm imrotate xén ảnh tới kích thước ảnh vào Hàm imrotate C ú pháp sau: B = imrotate(A,angle) B = imrotate(A,angle,method) B = imrotate(A,angle,method,bbox) Diễn giải + B=imrotate(A,angle): Quay ảnh A góc angle độ theo chiều ngược chiều kim đồng hồ, sử dụng phương pháp nội suy pixel gần Để quay theo chiều kim đồng hồ truyền giá trị âm cho tham số angle + B=imrotate(A,angle,method): Quay ảnh A góc angle độ theo chiều kim đồng hồ sử dụng phương pháp nội suy method + B=imrotate(A,angle,method,bbox): Quay ảnh A góc angle độ Tham số bbox hộp biên ảnh trả bbox chuỗi nhận giá trị sau: ‘crop’: Ảnh B bao gồm phần trung tâm ảnh quay có kích thước với ảnh A ‘loose’: ( Mặc định ): Ảnh B bao gồm toàn ảnh quay lớn ảnh A Hàm imrotate thiết lập giá trị cho pixel biên ảnh gốc Ví dụ : - Ví dụ đọc ảnh quang phổ ánh sáng mặt trời lưu định dạng FITS quay theo chiều ngang I = fitsread('solarspectra.fts'); I = mat2gray(I); J = imrotate(I,-1,'bilinear','crop'); imshow(I) figure, imshow(J) Hình Ảnh quay theo chiều ngang e) Xén ảnh (image cropping) - Để trích vùng chữ nhật ảnh, sử dụng hàm imcrop Hàm imcrop chấp nhận hai tham số chính: hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 8/13 27/03/2013 Các hàm xử lý ảnh matlab + Ảnh cần xén + C ác góc hình chữ nhật xác định vùng xén - Nếu ta gọi hàm imcrop mà khơng hình chữ nhật, ta xén ảnh theo tương tác Trong trường hợp này, ta sử dụng trỏ chuột để chọn vùng chữ nhật cần xén cách nhấn giữ phím chuột trái di chuyển để chọn vùng xén Khi chọn xong nhả chuột Trong ví dụ sau, ta hiển thị ảnh gọi hàm imcrop Hàm imcrop hiển thị ảnh hình đợi ta vẽ vùng chữ nhật cần xén ảnh imshow circuit.tif I=imcrop; Imshow(I); Hình Ảnh trước sau imcrop Hàm imcrop - C ú pháp sau: I2 = imcrop(I) X2 = imcrop(X,map) RGB2 = imcrop(RGB) I2 = imcrop(I,rect) X2 = imcrop(X,map,rect) RGB2 = imcrop(RGB,rect) [ ] = imcrop(x,y, ) [A,rect] = imcrop( ) [x,y,A,rect] = imcrop( ) Diễn giải - Hàm imcrop xén ảnh theo hình chữ nhật định I2=imcrop(I) ; X2=imcrop(X,map); RGB2=imcrop(RGB); Hàm imcrop hiển thị ảnh I đợi ta hình chữ nhật cần xén chuột - Nếu ta bỏ qua tham số, hàm imcrop thao tác ảnh trục - Để định hình chữ nhật ta dùng trỏ chuột nói - Ta kích thước hình chữ nhật mà khơng thao tác trực tiếp cú pháp sau: I2 = imcrop(I,rect) X2 = imcrop(X,map,rect) RGB2 = imcrop(RGB,rect) Trong đó: rect vector bốn phần tử dạng [xmin ymin width height], giá trị toạ độ không gian Để định toạ độ không theo toạ độ không gian cho ảnh vào, đặt trước tham số khác với vector hai phần tử Xdata Ydata C hẳng hạn: […]=imcrop(x,y,…) - Nếu ta cung cấp tham số phụ, hàm imcrop trả lại thông tin vùng chữ nhật chọn hệ toạ độ ảnh vào C hẳng hạn: [A,rect] = imcrop( ) [x,y,A,rect] = imcrop( ) hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 9/13 27/03/2013 Các hàm xử lý ảnh matlab A ảnh ra, x y Xdata Ydata ảnh vào Chú ý: - Do rect tập hợp toạ độ không gian, phần tử width height rect không luôn tương ứng xác với kích thước ảnh C hẳng hạn, giả sử rect [20 20 40 30], sử dụng hệ toạ độ không gian theo mặc định Góc trái vùng chữ nhật chọn tâm pixel (20,20) góc phải vùng chữ nhật tâm pixel (50,60) Ảnh ảnh có kích thước 31x41 khơng phải 30x40 Điều ảnh bao gồm tất pixel ảnh vào hoàn toàn phần bao bọc vùng chữ nhật Ví dụ I = imread('circuit.tif'); I2 = imcrop(I,[75 68 130 112]); imview(I), imview(I2) Hình Ảnh trước sau imcrop theo tọa độ cho trước f) Các biến đổi ảnh thông dụng - Để thực biến đổi không gian ảnh chiều, sử dụng hàm imtransform Hàm chấp nhận hai tham số chính: Ảnh cần biến đổi Một cấu trúc biến đổi gọi TFORM kiểu biến đổi ta muốn thực Chỉ kiểu biến đổi - Ta kiểu biến đổi cấu trúc TFORM C ó hai cách để tạo cấu trúc TFORM: Sử dụng hàm maketform Sử dụng hàm cp2tform Sử dụng hàm maketform - Khi sử dụng hàm này, ta kiểu biến đổi ta muốn thực C ác kiểu biến đổi mà maketform trợ giúp bao gồm: + ’ affine’: Biến đổi bao gồm: translation ( dịch ), rotation ( quay ), scaling, stretching shearing C ác đường thẳng đường thẳng, đường song song song song hình chữ nhật bị biến đổi + ’box’: Một trường hợp đặc biệt affine chiều dời định tỉ lệ độc lập + ‘composite ‘: Bao gồm tổ hợp hai hay nhiều phép biến đổi + ‘custom ‘: Biến đổi người dùng tự định nghĩa, cung cấp hàm thuận nghịch gọi hàm imtransform + ‘projective ‘: Biến đổi đường thẳng giữ nguyên đường song song đồng quy lại thành điểm Sử dụng cp2tform - Ta sử dụng hàm để tạo cấu trúc TFORM ta muốn thi hành biến đổi cần khít với điểm liệu biến đổi đa thức C hú ý: Khi sử dụng với hàm imtransform, cấu trúc TFORM phải định nghĩa biến đổi chiều Nếu ảnh chứa nhiều chiều chẳng hạn ảnh RGB, biến đổi chiều áp đặt tới tất mặt phẳng chiều theo chiều cao Để định nghĩa biến đổi n chiều sử dụng hàm imformarrray Thực biến đổi - Khi ta định nghĩa cấu trúc TFORM, ta thi hành biến đổi cách gọi hàm imtransform C hẳng hạn, đoạn mã sau sử dụng hàm để thi hành biến đổi projective cho ảnh bàn cờ: I = checkerboard(20,1,1); figure; imshow(I) hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 10/13 27/03/2013 Các hàm xử lý ảnh matlab T = maketform('projective',[1 1; 41 1; 41 41; 41], [5 5; 40 5; 35 30; -10 30]); R = makeresampler('cubic','circular'); K = imtransform(I,T,R,'Size',[100 100],'XYScale',1); figure, imshow(K) Hình Ảnh trước sau imtransforms - C ác tuỳ chọn hàm imtransform cho phép ta điều khiển nhiều khía cạnh việc biến đổi C hẳng hạn, ý ảnh bị biến đổi xuất nhiều copy ảnh gốc Điều nhận tuỳ chon ‘size’.Xem thêm Help Online Hàm imtransform - Áp đặt biến đổi không gian chiều lên ảnh Cú pháp B = imtransform(A,TFORM) B = imtransform(A,TFORM,INTERP) [B,XDATA,YDATA] = imtransform( ) [B,XDATA,YDATA] = imtransform( ,param1,val1,param2,val2, ) Diễn giải + B=imtransform(A,TFORM ): biến đổi ảnh A theo cấu trúc định nghĩa TFORM C ấu trúc trả từ hàm maketform cp2tform Nếu ndims(A)>2 ảnh RGB biến đổi khơng gian chiều áp đặt tới tất mặt phẳng theo chiều cao Khi sử dụng cú pháp này, hàm imtransform tự động dịch gốc ảnh để ảnh hiển thị nhiều + B=imtransform(A,TFORM, INTERP): dạng phép nội suy sử dụng INTERP giá trị ‘nearest’, ‘bicubic’ ‘bilinear’ Tương tự, INTERP cấu trúc trả từ hàm makeresampler Tuỳ chọn cho phép điều khiển nhiều lên việc lấy mẫu lại (resampling) + [B,XDATA,YDATA]= imtransform(…): trả vị trí ảnh B khơng gian X-Y XDATA YDATA vector hai thành phần Những thành phần XDATA toạ độ x cột đầu cuối B Những thành phần YDATA toạ độ y cột đầu cuối B Bình thường, hàm imtransform tính tốn XDATA YDATA tự động B chứa tồn ảnh biến đổi A Tuy nhiên, ta đè chồng tính tốn tự động xem đây: + [B,XDATA,YDATA] = imtransform( ,param1,val1,param2,val2, ): C hỉ tham số điều khiển nhiều khía cạnh khác biến đổi không gian Bảng sau liệt kê tham số mà ta Tham số Diễn giải ‘UData’ C ả hai tham số ve ctor hai phần tử thực ‘Udata’ ‘Vdata’ vị trí k hơng gian ‘VData’ ảnh A k hông gian vào chiề u U-V Hai phần tử ‘Udata’ cho toạ độ u (hoành độ ) cột đầu tiê n cuối A Hai phần tử ‘Vdata’ cho toạ độ v ( tung độ ) hàng đầu tiê n cuối A Giá trị m ặc định cho ‘Udata’ ‘Vdata’ tương ứng [1 size (A,2) ] [1 size (A,1) ] ‘Xdata’ ‘Ydata’ C ả hai tham số ve ctor hai phần tử thực vị trí k hơng gian ảnh B k hông gian chiề u X-Y Hai phần tử ‘Xdata’ hoành độ x cột đầu tiê n cuối B Hai phần tử ‘Ydata’ tung độ hàng đầu tiê n cuối B Nế u ‘Xdata’ ‘Ydata’ k hông ra, hàm im transform ước lượng giá trị cho chúng để chứa toàn ảnh bị biế n đổi ‘XYScale ’ Là ve ctor với m ột hai phần tử thực Phần tử đầu tiê n ‘XYScale ’ chiề u rộng m ỗi pix e l vào k hông gian X-Y Phần tử thứ hai (nế u tồn tại) chiề u cao m ỗi pix e l Nế u ‘XYScale ’ có m ột phần tử, giá trị dùng cho chiề u rộng chiề u cao Nế u ‘XYScale ’ k hông định Size ‘XYScale ’ tính tốn từ ‘Size ’,’Xdata’ ‘Ydata’ ‘Size ’ Một ve ctor hai phần tử nguyê n k hông âm ‘Size ’ số hàng cột ảnh B Với chiề u cao hơn, k ích cỡ B lấy trực tiế p từ A Nói cách k hác, size (B,k ) tương đương với size (A,k ) với k >2 Nế u ‘Size ’ k hơng định, tính từ ‘Xdata’,’Ydata’ ‘XYScale ’ hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 11/13 27/03/2013 Các hàm xử lý ảnh matlab ‘FillValue s’ Một m ảng chứa m ột nhiề u giá trị tô (fill value s) Fill value s sử dụng cho pix e l trê n ảnh k hi vị trí biế n đổi tương ứng trê n ảnh vào hoàn toàn viề n ảnh nế u A chiề u, ‘Fillvalue s’ phải vô hướng Tuy nhiê n, nế u chiề u A lớn 2, ‘FillValue s’ m ột m ảng m k ích thước thoả m ãn ràng buộc sau: size (fill_value s,k ) phải size (A,k +2) C hẳng hạn, nế u A m ột ảnh R GB unit8 có k ích thước 200x 200x k ‘FillValue s’ bao gồm : 0: Tô với m àu đe n [0;0;0]: Tô với m àu đe n 255: Tô với m àu trắng [255;255;255]: Tô với m àu trắng [0;0;255]: Tô với m àu x anh [255;255;0]: Tô với m àu vàng Nế u A chiề u 200x 200x 3x 10 ‘FillValue s’ vơ hướng 1x 10,3x 1,3x Ví dụ Áp phép dịch chuyển ngang tới ảnh cường độ ; I = imread('cameraman.tif'); tform = maketform('affine',[1 0;.5 0; 0 1]); J = imtransform(I,tform); imshow(I), figure, imshow(J) Hình Ảnh trước sau imtransforms với cường độ ảnh Như tìm hiểu xong hàm matlab hỗ trợ cho xử lý ảnh Phần tìm hiểu thuật tốn xử lý ảnh _ Reference Luận văn ĐH Công Nghiệp TP HCM Giáo trình matlab Khoa Tốn -Tin, ĐH Tự Nhiên ,ĐHQG TP HCM Comments # tgg agg 2011-09-14 07:02 Reply | Reply with quote | Quote # nth 2011-09-14 07:03 cho file pdf bạn # ninhhuong 2012-02-16 22:48 ko có link down bạn # Hoang 2012-02-17 06:50 Tong hop tu nhieu nguon,nen khong co file ban oi # lienhuong Reply | Reply with quote | Quote Reply | Reply with quote | Quote Reply | Reply with quote | Quote 2012-03-02 12:20 hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en 12/13 27/03/2013 Các hàm xử lý ảnh matlab hay qua Reply | Reply with quote | Quote # lienhuong 2012-03-02 12:24 cảm ơn ban chia sẻ học bổ ích # bkit Reply | Reply with quote | Quote 2012-03-31 16:26 bai viet hay cam on nhieu # 123123 Reply | Reply with quote | Quote 2012-04-22 08:04 Reply | Reply with quote | Quote # xugo 2012-05-06 09:57 hay thanks Reply | Reply with quote | Quote # vhung 2012-09-13 08:05 tuyệt vời cám ơn bạn nhiều Reply | Reply with quote | Quote # pit 2012-10-02 22:59 cho em hỏi matlap phân biệt tiền đồng hình chụp có mệnh giá tiền khác giúp em với # tonyk 2012-11-27 15:19 thank a phần đâu a? Reply | Reply with quote | Quote Reply | Reply with quote | Quote Refresh comments list RSS feed for comments to this post Add comment Name (required) 1000 sym bols le ft Send J C omments RELATED ARTICLES 2011-01-31 - Giới thiệu xử lý ảnh 2011-02-01 - Thresholding Segmentation 2011-02-01 - Cơ xử lý nhiễu 2011-02-01 - Histogram Equalization 2011-03-11 - Cơ PIC 2011-08-11 - Giới thiệu matlab xử lý ảnh COPYRIGHT © 2013 H LABORATORY ALL RIGHTS RESERVED MODIFIED BY HOANG NGUYEN hlab.com.vn/index.php?option=com_content&view=article&id=202%3Ax-ly-nh-vi-matlab&catid=47%3Ac-bn-v-dsp&Itemid=113&lang=en FEED ENTRIES 13/13