1. 程式人生 > >MATLA影象處理之二值化以及灰度處理

MATLA影象處理之二值化以及灰度處理

首先先來明白幾個概念: 1、彩色影象(RGB):影象的每個畫素點都是由紅(R)、綠(G)、藍(B)三個分量來表示的,每一個分量一般分別介於0-255之間,當然如果每一個顏色分量用更多的位數去表示的話,那麼分量的取值就會大於255。假設現在每個基色用一個位元組表示,那麼彩色影象的每一個畫素就是用3*8=24位來表示,即一個畫素可以呈現出2的24次方種顏色,大約是1600萬種顏色。 2、灰度影象(gray image):影象的每一個畫素點只有一個顏色分量,這個顏色分量的取值同樣也與每個畫素的表示資料位數有關係,如果是8位的(即用8個二進位制數來表示一個畫素點的數值),那麼分量取值就是0-255,共256級灰度,如果是16位的,那麼分量取值就是0-65535,共65536級灰度。 3、二值影象(binary image):影象的每一個畫素點取值只有兩種可能,要麼是黑色,要麼是白色。通常我們把其他影象轉化為二值影象的時候,就會設定一個閾值,當原始影象的某個畫素的數值大於這個閾值的時候,我們就把這個畫素變成白色(顏色分量為255),如果某個畫素的數值小於這個閾值的時候,我們就把這個畫素變成黑色(顏色分量為0),當把原始影象的每一個畫素點都這樣遍歷完之後,就形成了一幅二值化影象。

下面我們在MATLAB中進行各個影象之間的轉化

%讀取一張圖片,並顯示
original_picture=imread('C:\Users\MyPC\Desktop\cat.jpg');
figure(1);
imshow(original_picture);
title('原始RGB影象')

%把影象轉換成灰度影象
GrayPic=rgb2gray(original_picture);%把RGB影象轉化成灰度影象
figure(2)
imshow(GrayPic);
title('RGB影象轉化為灰度影象')

%對影象進行二值化處理
thresh=graythresh(original_picture);%graythresh為自動確定二值化閾值函式,大於該閾值的就變成白色,小於該閾值的就變成黑色,所以閾值越大越黑,閾值越小越白
Pic2=im2bw(original_picture,thresh);%如果想要自己設定閾值,那麼就可以這樣寫Pic2=im2bw(original_picture,value);,value=[0,1]中間的任何數值
figure(3);
imshow(Pic2);
title('RGB影象轉化為二值化影象')

thresh=graythresh(GrayPic);
Pic2_=im2bw(GrayPic,thresh);
figure(4);
imshow(Pic2_);
title('灰度影象轉化為二值化影象')

結果如下 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述