一、灰階二值化簡介
1 灰階化 (grayscale)
将彩色圖像轉化為灰階圖像的過程稱為圖像灰階化。彩色圖像中的像素值由RGB三個分量決定,每個分量都有0-255(256種)選擇,這樣一個像素點的像素值可以有1600萬種可能(256256256),而灰階圖的像素點的像素值是RGB三個分量值相同的一種特殊的彩色圖像, 隻有256種可能。是以在圖像進行中,往往将各種圖像首先灰階化成灰階圖像以便後續處理,降低計算量。灰階是指隻含亮度資訊,不含色彩資訊的圖像。黑白照片就是灰階圖,特點是亮度由暗到明,變化是連續的。灰階圖像的描述與彩色圖像一樣仍然反映了整幅圖像的整體和局部的色度和亮度等級的分布和特征,
使用灰階圖的好處:
① RGB的值都一樣。
② 圖像資料即調色闆索引值,就是實際的RGB值,也就是亮度值。
③ 因為是256色調色闆,是以圖像資料中一個位元組代表一個像素,很整齊。
是以,做圖像處理時一般都采用灰階圖。
要表示灰階圖,就需要把亮度值進行量化,有四種方法:
(1)分量法
将彩色圖像中的三分量的亮度作為三個灰階圖像的灰階值,可根據應用需要選取一種灰階圖像。
(2)最大值法
将彩色圖像中的三分量亮度的最大值作為灰階圖的灰階值。
(3)均值法
将彩色圖像中的三分量亮度求平均得到灰階圖的灰階值。
(4)權重平均法
根據重要性及其它名額,将三個分量以不同的權值進行權重平均。由于人眼對綠色的敏感最高,對藍色敏感最低,是以,按下式對RGB三分量進行權重平均能得到較合理的灰階圖像,f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))。
2 二值化(binaryzation)
圖像的二值化是将圖像上的像素點的灰階值設定為0或255,也就是将整個圖像呈現出明顯的黑白效果。将256個亮度等級的灰階圖像通過适當的閥值選取而獲得仍然可以反映圖像整體和局部特征的二值化圖像。所有灰階大于或等于閥值的像素被判定為屬于特定物體,其灰階值為255,否則這些像素點被排除在物體區域以外,灰階值為0,表示背景或者例外的物體區域。在數字圖像進行中,二值圖像占有非常重要的地位,首先,圖像的二值化有利于圖像的進一步處理,使圖像變得簡單,而且資料量減小,能凸顯出感興趣的目标的輪廓。其次,要進行二值圖像的處理與分析,首先要把灰階圖像二值化,得到二值化圖像。
二值化的常用算法有:
全局二值化: 一幅圖像包括目标物體、背景還有噪聲,要想從多值的數字圖像中直接提取出目标物體,最常用的方法就是設定一個全局的門檻值T,用T将圖像的資料分成兩部分:大于T的像素群和小于T的像素群。将大于T的像素群的像素值設定為白色(或者黑色),小于T的像素群的像素值設定為黑色(或者白色)。全局二值化,在表現圖像細節方面存在很大缺陷。為了彌補這個缺陷,出現了局部二值化方法。
局部二值化:按照一定的規則将整幅圖像劃分為N個視窗,對這N個視窗中的每一個視窗再按照一個統一的門檻值T将該視窗内的像素劃分為兩部分,進行二值化處理。局部二值化也有一個缺陷。這個缺陷存在于那個統一門檻值的標明。這個門檻值是沒有經過合理的運算得來,一般是取該視窗的平局值。這就導緻在每一個視窗内仍然出現的是全局二值化的缺陷。為了解決這個問題,就出現了局部自适應二值化方法。
局部自适應二值化:在局部二值化的基礎之上,将門檻值的設定更加合理化。該方法的門檻值是通過對該視窗像素的平均值E,像素之間的差平方P,像素之間的均方根值Q等各種局部特征,設定一個參數方程進行門檻值的計算,例如:T=aE+bP+c*Q,其中a,b,c是自由參數。這樣得出來的二值化圖像就更能表現出二值化圖像中的細節。
3 反色(inverse)
反色的實際含義是将R、G、B值反轉。若顔色的量化級别是256,則新圖的R、G、B值為255減去原圖的R、G、B值。這裡針對的是所有圖,包括真彩圖、帶調色闆的彩色圖(又稱為僞彩色圖)、和灰階圖。真彩圖不帶調色闆,每個象素用3個位元組,表示R、G、B三個分量。是以處理很簡單,把反轉後的R、G、B值寫入新圖即可,比如一個點的顔色為(0,0,0),反色後為(255,255,255)。帶調色闆的彩色圖,其位圖中的資料隻是對應調色闆中的一個索引值,我們隻需要将調色闆中的顔色反轉,形成新調色闆,而位圖資料不用動,就能夠實作反轉。
二、部分源代碼
clc;%清除指令視窗中的内容
close all;%關閉所有的figure視窗
clear all;%清楚工作空間所有的變量、函數等
I=imread ('C:\Users\lenovo\Desktop\建立檔案夾\1.png');%讀取蚊香圖檔
subplot(331);%設定圖檔顯示樣式,三行三列,顯示位置為第一張
imshow (I) ;%顯示原圖
title('原圖');%命名為“原圖”
I = imnoise(I,'speckle',0.8);%加入斑點噪聲,模拟現實噪音幹擾情況
subplot(332);%顯示位置為第二張
imshow(I);%顯示加噪後的圖檔
title('加噪');%命名為“加噪”
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);%将加噪後的彩色圖檔的R,G,B三分量資料分别存儲到矩陣R,G,B中
R= wiener2(R,[15,15]);%對R分量矩陣進行維納濾波
G= wiener2(G,[10,10]);%對G分量矩陣進行維納濾波
B= wiener2(B,[5,5]);%對B分量矩陣進行維納濾波
I(:,:,1)=R;
I(:,:,2)=G;
I(:,:,3)=B;%将濾波後的R,G,B分量再還原給圖檔,I為濾波處理後的彩色圖檔
subplot(333);%顯示位置為第三個
imshow(I);%顯示濾波後的圖檔
title('維納濾波後');%命名為“維納濾波後”
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);%将圖檔的R、G、B分量資料分别存儲到矩陣R,G,B中
R((R<=60|R>=130)|(G<=120|G>=180))=255;%使用photoshop取色工具分别取蚊香片和背景的的R,G,B分量
G((R<=60|R>=130)|(G<=120|G>=180))=255;
B((R<=60|R>=130)|(G<=120|G>=180))=255;%将R,G,B三個分量矩陣中的資料進行處理,不屬于蚊香片顔色區間的置為白色
I(:,:,1)=R;
I(:,:,2)=G;
I(:,:,3)=B;%将處理過的三色資料賦給原圖
I1=rgb2gray(I);%将真彩圖像轉換為灰階圖像
subplot(334);%顯示位置為第四個
imshow(I1);%顯示處理後的灰階圖像
title('灰階圖像');%命名為“灰階圖像”
thresh=graythresh(I1);%使用grathresh函數,找到灰階圖像的合适門檻值
I2=im2bw(I1,thresh);%使用門檻值将灰階圖像變成二值圖像
subplot(335);%顯示位置為第五個
imshow(I2);%顯示二值圖像I2
title('二值圖像');%命名為“二值圖像”
SE0=strel('disk',5);%在進行膨脹、腐蝕操作前,需要建立一個掩膜(mask),這裡建立一個半徑為5的平面圓盤狀掩膜,SE0是一個矩陣
SE=strel('disk',12);%在進行膨脹、腐蝕操作前,需要建立一個掩膜(mask),這裡建立一個半徑為12的平面圓盤狀掩膜,SE是一個矩陣
I2=imdilate(I2,SE0);%進行膨脹操作,白色部分擴張,消除維納濾波沒過濾幹淨的噪聲(主要為邊界區域)
subplot(336);%顯示位置為第6個
三、運作結果

四、matlab版本及參考文獻
1 matlab版本
2014a
2 參考文獻
[1] 蔡利梅.MATLAB圖像處理——理論、算法與執行個體分析[M].清華大學出版社,2020.
[2]楊丹,趙海濱,龍哲.MATLAB圖像處理執行個體詳解[M].清華大學出版社,2013.
[3]周品.MATLAB圖像處理與圖形使用者界面設計[M].清華大學出版社,2013.
[4]劉成龍.精通MATLAB圖像處理[M].清華大學出版社,2015.