CV 領域這樣入門進階才是對滴(四)
元宵節看樣子快到了,才立春、才春節、才開工,不知不覺到了元宵,估摸著2019確實過得挺快的!
元宵節是中國與漢字文化圈地區以及海外華人的傳統節日之一。正月是農曆的元月,古人稱夜為“宵”,所以把一年中第一個月圓之夜正月十五稱為元宵節。在此,“計算機視覺戰隊”提前祝節日快樂!
不知道大家還記得系列3說的什麼嗎?看樣子豬年真的把一些人過“傻”咯~我提醒下,之前我們已經介紹了影象基本知識、演算法,介紹了Python的基本,介紹了彩色影象處理的演算法,今天我們來一點特殊的,那就是灰色影象處理的一些演算法,一併來簡單瞭解下,因為接下來我們要開始接觸實際性的知識及實踐。
hui
灰
se
色
tu
圖
xiang
像
所謂灰度處理是根據單色影象的灰度對輸出影象的灰度進行再定義、以改善影象的對比度。單色影象的灰度有256級、128級、64級等。
接下來,我均以256級單色影象舉例。假設設源影象的灰度值為f(i, j),處理後的灰度值為g(i, j)。
01
灰色影象的逆反處理
這種處理方式其實與之前介紹彩色影象一樣的,其演算法理論一樣,如:
g(i, j) = 255 - f(i, j)
02
灰色影象的對比度處理
-
增大對比度
輸入的灰度值越高,對應的輸出灰度值越低;灰度值減少,影象變暗,從而使對比度增加。
通過擴充套件灰度範圍來增加對比度,目的是為了更好地分割目標與背景。
將設m,n分別為影象的行數和列數,f(m, n)為原影象的灰度值,g(m, n)為目標影象的灰度值,k為斜率,k=255/(b-a),[a, b]為需要轉換的灰度區間。
現在,對[a, b]灰度區間的畫素進行對比度增強,斜率k必大於1,在灰度區間[a, b]線性變換成[0, 255],起到對比度增強的作用。在小於灰度值a的畫素中統一設定為0(黑色),在大於灰度值b的畫素中統一設定為255(白色),目的是為了更好地分割目標與背景。
OpenCV程式碼
for (int y = 0; y < gray.rows; y++)
{
for (int x = 0; x < gray.cols; x++)
{
if (gray.at<uchar>(y, x) < fa)
gray_Contrast.at<uchar>(y, x) = 0;
else if (gray.at<uchar>(y, x) >fb)
gray_Contrast.at<uchar>(y, x) = 255;
else
gray_Contrast.at<uchar>(y, x) = k*(gray.at<uchar>(y, x) - fa);
}
}
-
減小對比度
-
改善對比度
-
增強對比度
03
區域性濾波處理
區域性濾波處理是指利用3*3的影象塊內的畫素的顏色值對當前畫素進行設定的一種影象處理技術。
平均值濾波
g(i, j)=( f(i-1, j-1) + f(i-1, j) + f(i-1, j+1) + f(i, j-1) + f(i, j) + f(i, j+1) + f(i+1, j-1) + f(i+1, j) + f(i+1, j+1) ) / 9
* 這裡要注意的是對於邊緣的畫素的情況,防止越界。最小值濾波
最小值濾波是指在影象中以當前畫素f(i, j)為中心切出一個N*M(例如3*3)畫素組成的影象塊,g(i, j)取影象塊中灰度值中的最小值。
最大值濾波
最大值濾波是指在影象中以當前畫素f(i, j)為中心切出一個N*M(例如3*3)畫素組成的影象塊,g(i, j)取影象塊中灰度值中的最大值。
中值濾波
中值濾波是指在影象中以當前畫素f(i,j)為中心切出一個N*M(例如3*3)畫素組成的影象塊,g(i,j)取影象塊中所有灰度排序後序列的中間值。
04
灰度影象直方圖
對於每個灰度值,求出在影象中具有該灰度值的畫素數的圖形叫做灰度直方圖,灰度直方圖是灰度級的函式,描述影象中具有相同灰度畫素的個數。灰度直方圖的橫座標是灰度級,縱座標是該灰度出現的頻率(即畫素的個數)。
直方圖的用途主要是給出了一個簡單可見的指示,用來判斷一幅影象是否合理的利用了全部被允許的灰度級範圍。一般一幅數字影象應該利用全部或幾乎全部可能的灰度級範圍,否則增加了量化間隔。
一旦數字化影象的級數小於255,丟失的資訊將不能恢復。如果影象具有超出數字量化器所能處理的範圍的亮度,則這些灰度級將簡單的置為0或255,因此將在直方圖的一端或兩端產生尖峰。
05
灰度影象二值化演算法
類判別法尋找闕值的步驟
1)計算輸入影象的灰度級直方圖(用灰度級的概率函式PHS(i)來表示)
2)計算灰度均值(Ave):
Ave = sigma((i - 1)*Phs(i)) i: 0->255
3)計算灰度類均值(Aver(k))和類直方圖和(W(k)):
Aver(k) = sigma((i+1)*Phs(i)) i: 0->k
W(k) = sigma(Phs(i)) i: 1->k
4)計算類分離指標
Q(k)={[Ave*W(k)-Aver(k)]^2)}/[W(k)*(1-W(k))]}
5)求使Q最大的k,最佳闕值: T = k - 1
還有其他二值處理方式:
等灰度片二值化
將輸入影象在某兩個等寬的灰度級範圍內的所有畫素全部置為0(黑),其餘灰度級的所有畫素全部置為255(白),則生成黑白二值影象。
線性二值化
將輸入影象在某一灰度級內的所有畫素全部置為0(黑),其餘灰度級的所有畫素全部置為原值的1/2,則生成黑白二值影象,並將影象與背景分離。
二值影象處理是指將二值化的影象進行某種修正,使之更適合於影象測量。二值影象處理包括以下操作:
膨脹: 使粒子變大,對影象進行膨脹處理之後再進行收縮處理,則可以修正影象的凹槽;
收縮:使粒子變小,對影象進行收縮處理之後再進行膨脹處理,則可以修正影象的凸槽;
清除孤立點:清除由一個畫素構成的物件以及修正由一個畫素構成的孔;
清除粒子:清除任意麵積以下的物件;
清除超大粒子:清除任意麵積以上的物件;
洞穴填充: 填充任意範圍。 往期回顧 ( 點選直接連結文章 )
感謝您抽出

.

.

來閱讀本文