MATLA影象處理之二值化以及灰度處理
阿新 • • 發佈:2018-12-13
首先先來明白幾個概念: 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('灰度影象轉化為二值化影象')
結果如下