(^_^)
dungbk - Trang đã được nâng cấp lên thành Itepress.com
VHDL/Xử lý ảnh/Matlap

Các lệnh xử lý ảnh trong MATLAP


DIP by mailto:dungbarca90@gmail.com

Nguồn : http://et.comeze.com/ Trang website chuyên về điện tử viễn thông.

CHƯƠNG 1:MỘT VÀI LỆNH CƠ BẢN

Ghi chú bằng :     % kết thúc lệnh bằng dấu ;

  1. 1.     Đọc và hiển thị ảnh:

Đọc ảnh:

I=imread(‘dip.bmp’);%đọc ảnh với giả sử ảnh đầu vào là dip.bmp.

Hiển thị ảnh:

imshow(‘dip.bmp’); hoặc J= imshow(I);

  1. 2.     Kiểm tra ảnh trong bộ nhớ:

Whos

Ket qua:

Name        Size                Bytes    Class    Attributes

I         256x256x3            196608  uint8

ans       256x256x3          196608  uint8

3.Ghi ảnh:

Giả sử ghi từ ảnh gốc là ảnh I phía trên để tạo ra một file ảnh mới:

Ví dụ:

imwrite(I, ‘result.jpg’); % ghi từ ảnh tạo ra ảnh mới result.jpg

4.Kiểm tra nội dung trong file ảnh vừa ghi:

Với ảnh ‘result.jpg’ vừa tạo trước ta dùng lệnh:

imfinfo(‘result.jpg’);

Kết quả:

ans =

Filename: ‘result.jpg’

FileModDate: ’13-Apr-2012 22:09:30′

FileSize: 13288

Format: ‘jpg’

FormatVersion: ”

Width: 256

Height: 256

BitDepth: 24

ColorType: ‘truecolor’

FormatSignature: ”

NumberOfSamples: 3

CodingMethod: ‘Huffman’

CodingProcess: ‘Sequential’

Comment: {}

5. Xóa workspace của tất cả các biến và đóng cửa sổ ảnh:

Lệnh:

Clear % Xóa workspace.

Close % Đóng cửa sổ ảnh.

Ví dụ:

clear,close all;

I=imread(‘dip.bmp’);

imshow(I);

6.Sử dụng hình thái mở để ước tính nền(background)

background = imopen(I,strel(‘disk’,15));%I:ảnh đầu vào,

Để hiển thị ta dùng lệnh:

imshow(background);

7.Hiển thị nền xấp xỉ như một bề mặt:

figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]);

set(gca,’ydir’,’reverse’);

8.Trừ ảnh nền từ ảnh ban đầu:

I2=imsubtract(I,background);% Trừ ảnh gốc I cho background ở trên.

figure,imshow(I2);% Hiển thị ảnh I2.

9.Thay đổi độ tương phản ảnh:

Ví dụ

I3=imadjust(I2,stretchlim(I2),[0 1]);

% hàm stretchlim là hàm tự tính giá trị [low high]

figure,imshow(I3);% Hiển thị ảnh

10.Áp dụng ngưỡng vào ảnh:

level = graythresh(I3); % hàm tự tính ngưỡng xấp xỉ để chuyển sang nhị phân

bw = im2bw(I3,level); % Chuyển sang ảnh nhị phân, dựa trên ngưỡng

figure, imshow(bw);

Ta kiểm tra các kiểu dữ liệu:

Name              Size                Bytes  Class      Attributes

I               256x256x3            196608  uint8

I2              256x256x3            196608  uint8

I3              256x256x3            196608  uint8

ans             256x256x3            196608  uint8

background      256x256x3            196608  uint8

bw              256×256               65536  logical

level             1×1                     8  double

11.Xác định số đối tượng trong ảnh:

Sử dụng bwlabel để gán nhãn tất cả các thành phần  trong ảnh nhị phân bw.

[labeled,numObjects] = bwlabel(bw,4);% Label components.

Số các đối tượng được tìm thấy bởi bwlabel.

numObjects

Để thêm màu sắc  vào hình ảnh,hiển thị đã gán nhãn bằng sử dụng một bảng màu được tạo bởi hàm hot

map = hot(numObjects+1); % tạo một colormap.

imshow(labeled+1,map); % Offset indices to colormap by 1.

12. Kiểm tra một đối tượng:

grain = imcrop(labeled) % Crop a portion of labeled.

13.Đo các đặc tính đối tượng trong ảnh

Lệnh regionprops đo đối tượng hoặc đặc tính vùng trong một ảnh và trả về cấu trúc mảng.

graindata = regionprops(labeled,’basic’);

14.Lệnh help để tìm các hàm:

Cú pháp:

help functionname % functionname—là tên hàm

Ví dụ: help imread;

CHƯƠNG 2:CHỈ DẪN

1 CÁC LOẠI ẢNH TRONG MATLAP:

2.Các kiểu ảnh trong Toolbox của MATLAP hỗ trợ:

• Index images

• Intensity images

• Binary images

• RGB images

2.1Indexed Images

Gồm 1 ma trận dữ liệu,X,và một ma trận bản đồ màu,map .Ma trận dữ liệu có thể là class uint8, uint16 ,hoặc double  ma trận bản đồ màu là mảng m-by-3 của class double .Mỗi hàng của map là chỉ rõ thành phần red,green,blue của một màu đơn.

Class và bản đồ màu

Mối quan hệ giữa giá trị trong ma trận ảnh và bản đồ màu phụ thuộc vào class của ma trận ảnh.Nếu ma trận ảnh là class double thì giá trị của 1 trỏ tới hàng đầu tiên trong bản đồ màu,giá trị điểm 2 sẽ trỏ tới hàng thứ 2 và cứ tiếp tục như vậy.Nếu ma trận ảnh là class uint8 hoặc uint16 có một độ lệch – giá trị 0 sẽ trỏ tới hàng đầu tiên của bản đồ màu,giá trị 1 trỏ tới hàng thứ 2 và cứ tiếp tục như vậy.

Sự giới hạn hỗ trợ tới unit16:

Chú ý rằng toolbox giới hạn hỗ trợ cho indexed images của class uint16 .Bạn có thể đọc các ảnh trong MATLAP và hiển thị chúng,nhưng trước khi bạn xử lý một uint16 indexed image bạn phải chuyển nó sang hoặc double hoặc uint8.Để chuyển sang dạng double ta dùng hàm im2double;để giảm ảnh tới 256 màu hoặc ít hơn(uint8) gọi imapprox.Để rõ hơn hãy xem lệnh im2double và imapprox trong Help của MATLAP.

2.2  Intensity Images

Một Intensity Images là một ma trận dữ liệu , I, các giá trị đặc trưng cho cường độ trong một vài khoảng.Ma trận có thể của các class sau:double,uint8,uint16.

Trong khi các cường độ ảnh ít khi được lưu với 1 bản đồ màu,MATLAP sử dụng một bản đồ màu để hiển thị chúng.

Các thành phần của ma trận cường độ đặc trưng cho sự thay đổi của cường độ hoặc mức xám,nơi mà cường độ 0 thường đặc trưng mà đen và cường độ 1,255, hoặc 65535 thường đặc trưng cho cường độ đầy đủ,hoặc màu trắng.

2.3  Ảnh nhị phân

Chỉ gồm 0 và 1 trong ma trận(2 chiều) tương ứng đen và trắng.Ảnh nhị phân chỉ có thể lưu trong mảng của class double hoặc uint8 chứ không được uint16 (không  hỗ trợ).Mảng của class uint8 thường được thích dùng hơn vì sử dụng ít bộ nhớ hơn.Toolbox sử dụng một cờ logic để chứng tỏ rằng khoảng dữ liệu của một mảng logic uint8 .Nếu logical flag(cờ logic) là mở thì khoảng dữ liệu là [0,1] nếu đóng thì là [0,255].

2.4  Ảnh RGB

Dữ liệu được lưu trong mảng m-by-n-by-3 mà red,green,blue là các thành phần cho mỗi điểm ảnh.Các class là uint8,uint16,double.

3.Chuyển đổi giữa các định dạng ảnh

  1. 3.     Đọc một Graphics Image(ảnh đồ họa)

Hàm imread hỗ trợ đọc tất cả các định dạng ảnh đồ họa,hầu hết các ảnh đều có độ rộng bit là 8,khi đọc vào bộ nhớ MATLAP lưu chúng như class uint8.Với các định dạng mà hỗ trợ 16 bit dữ liệu,png,tiff,MATLAP lưu chúng ở dạng uint16.

Chú ý :Với ảnh indexed images hàm imread luôn đọc bản đồ màu vào trong một mảng của class double,mặc dù mảng ảnh của nó là class uint8 hay uint16.

Các định dạng MATLAP hỗ trợ :

• BMP (Microsoft Windows Bitmap)

• HDF (Hierarchical Data Format)

• JPEG (Joint Photographic Experts Group)

• PCX (Paintbrush)

• PNG (Portable Network Graphics)

• TIFF (Tagged Image File Format)

• XWD(XWindowDump)

4.Ghi một ảnh đồ họa

Dùng hàm imwrite.Chi tiết xem thêm ở phần Help của MATLAP.

Ví dụ về lệnh ghi kèm theo hiệu chỉnh độ rộng bit :

imwrite(X,’clown.png’,’BitDepth’,4);

Hoặc chỉnh chất lượng ảnh:

imwrite(I, ‘myfile.jpg’, ‘Quality’, 10);% chỉnh chất lượng ảnh

5.Các class lưu trữ file đầu ra:

Hàm imwrite sử dụng các các quy tắc sau để xác định class lưu trữ ảnh đầu ra:

6.Chuyển đổi các class lưu trữ hình ảnh

Bạn có thể chuyển đổi dữ liệu uint8 và uint16 sang double  hoặc từ đầu vào sang uint8 hay uint16 dùng các hàm im2double, im2uint8 ,và im2uint16

6.1 Bật hoặc tắt cờ logic:

Nếu dùng các hàm im2uint8 thì cờ tự động bật nếu không thì phải bật:

B = logical(uint8(round(A)));

Để tắt cờ bạn có thể  dùng lệnh

B = +A;

7.Chuyển đổi các định dạng ảnh

Ví dụ:

bitmap = imread(‘mybitmap.bmp’,’bmp’);%đọc ảnh vào

imwrite(bitmap,’mybitmap.png’,’png’);%chuyển sang định dạng khác

8.Thực hiện các phép toán đại số với ảnh:

Cộng ảnh:

Dùng hàm imadd:

Ví dụ:

I = imread(‘rice.tif’);

J = imread(‘cameraman.tif’);

K = imadd(I,J);

imshow(K);

Bạn có thể sử dụng lệnh này để tang độ sáng của ảnh bằng cách cộng them vào mỗi mức xám  một hằng số.

RGB = imread(‘flowers.tif’);

RGB2 = imadd(RGB,50);

subplot(1,2,1); imshow(RGB);

subplot(1,2,2); imshow(RGB2);

Trừ ảnh

Ví dụ:

rice= imread(‘rice.tif’);

background = imopen(rice, strel(‘disk’,15));

rice2 = imsubtract(rice,background);

imshow(rice),figure,imshow(rice2);

Nhân ảnh

Ví dụ:

I = imread(‘moon.tif’);

J = immultiply(I,1.2);

imshow(I);

figure, imshow(J);

Chia ảnh

Ví dụ:

I = imread(‘rice.tif’);

background = imopen(I, strel(‘disk’,15));

Ip = imdivide(I,background);

imshow(Ip,[]);

8.Hệ thống tọa độ:

Tọa độ điểm ảnh:

Tọa độ không gian

These commands display an image using nondefaultXDataand YData.

A = magic(5);

x = [19.5 23.5];

y = [8.0 12.0];

image(A,’XData’,x,’YData’,y), axis image, colormap(jet(25))

Đọc kỹ hơn phần này thì xem 2-33 của sách.

HIỂN THỊ VÀ IN ẢNH

Advertisements

Discussion

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Chuyên mục

Lượt truy cập

  • 928,389 lượt truy cập

Giới thiệu về Admin

Nhập địa chỉ email của bạn để theo dõi blog này và nhận được thông báo bài viết mới qua email.

Join 1,425 other followers

My twitter

Liên hệ đặt text link , quảng cáo

Vui lòng pm Yahoo: dungbarca90 My Google+ Profile |Hiện là admin của http://itepress.com/
và http://www.phonedevelop.net/

RSS Diễn đàn Itepress.com

  • An error has occurred; the feed is probably down. Try again later.