計(jì)算機(jī)視覺

將圖片壓縮成灰度圖像的幾種方法:

1.人眼對于彩色的感覺到亮度感覺的轉(zhuǎn)換,這是一個(gè)心理學(xué)問題,有一個(gè)公式:

Grey = 0.299R + 0.587G + 0.114*B

2.直接提取單通道圖

Grey=R or G or B

3.取平均值:

Grey=(R+G+B)/3


圖像預(yù)處理

1.灰度值變換

方法1:線性比例縮放

f(x)=ax+b
當(dāng)|a|>1時(shí),對比度增加,
當(dāng)|a|<0時(shí),對比度減小,若a為負(fù)數(shù)灰度值反轉(zhuǎn)。
當(dāng)b>0時(shí),亮度增加,反之亮度減小

方法2:灰度值直方圖均衡化

使用的前提時(shí)灰度值差異較大
對于一幅圖片,先要統(tǒng)計(jì)他像素中各個(gè)灰度級的出現(xiàn)情況,之后用直方圖來描繪?;叶戎狈綀D描述的時(shí)一個(gè)圖片中某個(gè)灰度在圖片中所占的比例。
灰度直方圖的兩個(gè)峰,數(shù)值大的是前景,數(shù)值小的是背景,中間的是最佳閾值區(qū)間

2.圖像平滑

方法1:
均值濾波
方法2:

高斯濾波:

高斯濾波

理想狀態(tài)下的濾波器:1.線性 2.與位置無關(guān) 3.可以控制參數(shù) 4.可以多次執(zhí)行 5.系數(shù)陣旋轉(zhuǎn)對稱

方法3:

中值濾波:這時(shí)一種非線性的濾波,在處理隨機(jī)噪聲上有優(yōu)勢


中值濾波

3.矯正

對圖像進(jìn)行旋轉(zhuǎn)、平移、放大的操作。


二值化應(yīng)用最廣泛的取閾值點(diǎn)方法

最大類間方差法(otus大津法):

適合用于雙峰圖,最小峰是前景,最大峰值時(shí)背景,中間值為最佳閾值區(qū)間。假設(shè)有一個(gè)點(diǎn)可以正好把一幅圖分為兩大類,這兩大類的均值為m1與m2假設(shè)的最優(yōu)點(diǎn)為mg,p1、p2表示的時(shí)前景背景所占的比例,默認(rèn)為1:1。目的就是找到最大的方差σ,因?yàn)榉讲畋硎镜氖请x散程度,找到一個(gè)分類點(diǎn)使得離散程度最高,就可以成功分離開前景和背景。


最大類間方差

opencv實(shí)現(xiàn)

參數(shù)說明
src:源圖像,可以為8位的灰度圖,也可以為32位的彩色圖像。(兩者由區(qū)別)
dst:輸出圖像
thresh:閾值
maxval:dst圖像中最大值
type:閾值類型,可以具體類型如下:

雙閾值分割可以用兩次單閾值分割疊加:
threshold(img2, out1, 50, 255, THRESH_BINARY); //大閾值對源灰度圖像進(jìn)行反二進(jìn)制閾值化操作 threshold(img2, out2,140, 255, THRESH_BINARY_INV);//thresh:閾值,maxval:輸出圖像中最大值 bitwise_and(out1, out2, img2); //對像素加和


特征提取

區(qū)域特征

從區(qū)域自身提取來的特征
最簡單的方法是計(jì)算區(qū)域的面積,其可以用計(jì)算區(qū)域內(nèi)點(diǎn)的個(gè)數(shù)來代替

行程編碼

在一個(gè)聯(lián)通的二值圖中,把圖像轉(zhuǎn)換成矩陣后,每一行只存儲(chǔ)連續(xù)點(diǎn)的開頭元素位置和結(jié)尾元素位置
有一個(gè)字符串“aaabccddddd”,經(jīng)過行程 編碼后可以用“3a1b2c5d

灰度圖的方差:可以判斷圖片是否模糊(要規(guī)定感受野的)
灰度圖的亮度:來描述圖片的連讀

幾何不變矩

矩是對變量分布和形態(tài)分布的一組度量,n階矩被定義為一變量的n次方與其概率密度函數(shù)之積的積分

變量的一階原始矩等價(jià)于[數(shù)學(xué)期望]、二至四階中心矩被定義為[方差]、[偏度]



HU不變矩具有平移旋轉(zhuǎn)和尺度不變性,這里表述的數(shù)域轉(zhuǎn)移到了二維




形態(tài)學(xué)

六種基本操作

1.閔科夫斯基加法

在結(jié)構(gòu)元上定義一個(gè)中心點(diǎn),把這個(gè)結(jié)構(gòu)元當(dāng)刷子以中心點(diǎn)為基準(zhǔn)遍歷目標(biāo),目標(biāo)沒有的點(diǎn)就加上去。


2.膨脹:

對結(jié)構(gòu)元先進(jìn)行對稱再進(jìn)行閔可夫斯基加法,因?yàn)榻Y(jié)構(gòu)元大多數(shù)是中心對稱的,所以一般不區(qū)分膨脹和閔可夫斯基加法。

3.閔科夫斯基減法:

膨脹的對偶運(yùn)算


4.腐蝕:閔可夫斯基加法的對偶
5.閉運(yùn)算

先膨脹后腐蝕

閉運(yùn)算

閉運(yùn)算的效果圖如下圖所示:

我們也可以得到關(guān)于閉運(yùn)算的幾點(diǎn)結(jié)論:
(1)閉運(yùn)算能夠填平小湖(即小孔),彌合小裂縫,而總的位置和形狀不變。
(2)閉運(yùn)算是通過填充圖像的凹角來濾波圖像的。
(3)結(jié)構(gòu)元素大小的不同將導(dǎo)致濾波效果的不同。
(4)不同結(jié)構(gòu)元素的選擇導(dǎo)致了不同的分割。

6.開運(yùn)算

先腐蝕后膨脹
開運(yùn)算的效果圖如下圖所示:

我們可以得到關(guān)于開運(yùn)算的幾點(diǎn)結(jié)論:
(1)開運(yùn)算能夠除去孤立的小點(diǎn),毛刺和小橋,而總的位置和形狀不便。
(2)開運(yùn)算是一個(gè)基于幾何運(yùn)算的濾波器。
(3)結(jié)構(gòu)元素大小的不同將導(dǎo)致濾波效果的不同。
(4)不同的結(jié)構(gòu)元素的選擇導(dǎo)致了不同的分割,即提取出不同的特征。

邊界提取的原理:

通過對目標(biāo)圖像進(jìn)行腐蝕和膨脹處理,比較結(jié)果圖像與原圖像的差別來實(shí)現(xiàn)。

內(nèi)邊界的提取利用圖像的腐蝕處理得到原圖像的一個(gè)收縮,再將收縮結(jié)果與目標(biāo)圖像進(jìn)行異或運(yùn)算,實(shí)現(xiàn)差值部分的提取,

外邊界提取先對圖像進(jìn)行膨脹處理,然后用膨脹結(jié)果與原目標(biāo)圖像進(jìn)行異或運(yùn)算,也就是求膨脹結(jié)果與原目標(biāo)圖像的差集

關(guān)鍵就是找到合適的結(jié)構(gòu)元

一些基本術(shù)語

刷子:用來處理對象的圖像,通常是較小的,相當(dāng)于濾波器、窗口
擊中:兩個(gè)對象有交集
對稱:一般是關(guān)于某一個(gè)點(diǎn)的旋轉(zhuǎn)對稱


邊緣檢測

定義:

邊緣:局部差異性強(qiáng),一定不是閉合的
邊界:一定是閉合的
輪廓:是在大尺度,在δ比較大的情況下,全局來看,也不一定是閉合的

邊緣的分類:

階梯狀邊緣:圖像灰度值不同的相鄰區(qū)間內(nèi)
脈沖狀邊緣:在該處圖像的灰度值會(huì)有突增
屋頂狀邊緣:灰度值的上升和下降都比較平滑,這三類邊緣的檢測是越來越難的


三類邊緣

梯度

對梯度的定義可以有很多,梯度反映的圖像在該點(diǎn),增加最快的方向??梢杂锰荻染植康淖畲笾祦硪?guī)定邊緣。


常見對梯度的定義

算子

定義:

廣義算子就是一個(gè)映射,一維中可以由一個(gè)數(shù)變成另一個(gè)數(shù),就是一個(gè)函數(shù);二維中可以把一個(gè)矩陣轉(zhuǎn)換成另一個(gè)矩陣、或者壓縮到一維下的
另一個(gè)數(shù)值
狹義的算子是函數(shù)到函數(shù)
泛函是函數(shù)到數(shù)字


像是羅伯特算子適合一個(gè)傾斜45,135的階梯、脈沖邊緣,普瑞維特算子適合橫豎的邊緣。

幾種常見的二階算子(大部分奇數(shù)規(guī)模)

首先模板基本要求是核為正數(shù),所有系數(shù)的和為0,如拉普拉斯算子:


canny邊緣檢測步驟

1.先要進(jìn)行降噪,對圖像進(jìn)行個(gè)平滑處理,這里選取的是五階的高斯平滑算子

2.剛才的sobel算子,來計(jì)算梯度的幅值和方向



3.非極大值抑制:再池化一次,將邊緣描述成少像素的細(xì)線條
4.滯后閾值: 滯后閾值需要兩個(gè)閾值(高閾值和低閾值):

如果某一像素位置的幅值超過 高 閾值, 該像素被保留為邊緣像素。
如果某一像素位置的幅值小于 低 閾值, 該像素被排除。
如果某一像素位置的幅值在兩個(gè)閾值之間,該像素僅僅在連接到一個(gè)高于 高 閾值的像素時(shí)被保留。

Canny 推薦的 高:低 閾值比在 2:1 到3:1之間。

    cvtColor(srcImage, srcGray, CV_BGR2GRAY);//灰度化
GaussianBlur(srcGray, srcGray, Size(3,3),1, 1);//高斯, 120, 255
//blur(srcGray, srcGray, Size(3, 3));
imshow("GaussianBlur", srcGray);
//Canny檢測
int edgeThresh = 80;
Mat Canny_result;
Canny(srcGray, Canny_result, 120, 250,3);
imshow("Canny_result", Canny_result);
waitKey(0);

我考慮了用膨脹和腐蝕去點(diǎn)條形碼,效果一般

Mat element1 = getStructuringElement(MORPH_CROSS, Size(5, 5));
Mat element2 = getStructuringElement(MORPH_CROSS, Size(6, 6));
Mat element3 = getStructuringElement(MORPH_CROSS, Size(2, 2));
dilate(Canny_result, Canny_result, element1);
erode(Canny_result, Canny_result, element2);
dilate(Canny_result, Canny_result, element1);
erode(Canny_result, Canny_result, element3);
erode(Canny_result, Canny_result, element3);
dilate(Canny_result, Canny_result, element3);

LBP提取紋理(不受光照影響)

LBPH(Local Binary Pattern Histogram) 局部二值模式直方圖,是一種用來描述圖像局部紋理特征的算子;它具有旋轉(zhuǎn)不變性和灰度不變性等顯著的優(yōu)點(diǎn),原始的LBP算子定義為在33的窗口內(nèi),以窗口中心像素為閾值,將相鄰的8個(gè)像素的灰度值與其進(jìn)行比較,若周圍像素值大于中心像素值,則該像素點(diǎn)的位置被標(biāo)記為1,否則為0。這樣,33鄰域內(nèi)的8個(gè)點(diǎn)經(jīng)比較可產(chǎn)生8位二進(jìn)制數(shù)(通常轉(zhuǎn)換為十進(jìn)制數(shù)即LBP碼,共256種),即得到該窗口中心像素點(diǎn)的LBP值,并用這個(gè)值來反映該區(qū)域的紋理信息。LBP算法可以很好的提取圖片局部的紋理特征,由于其選擇的是閾值函數(shù), LBP算法收光照影響不明顯。

void LBP(IplImage* src, IplImage* dst)

{

int width = src->width;

int height = src->height;

for (int j = 1; j < width - 1; j++)

{

for (int i = 1; i < height - 1; i++)

{

uchar neighborhood[8] = { 0 };

neighborhood[7] = CV_IMAGE_ELEM(src, uchar, i - 1, j - 1);

neighborhood[6] = CV_IMAGE_ELEM(src, uchar, i - 1, j);

neighborhood[5] = CV_IMAGE_ELEM(src, uchar, i - 1, j + 1);

neighborhood[4] = CV_IMAGE_ELEM(src, uchar, i, j - 1);

neighborhood[3] = CV_IMAGE_ELEM(src, uchar, i, j + 1);

neighborhood[2] = CV_IMAGE_ELEM(src, uchar, i + 1, j - 1);

neighborhood[1] = CV_IMAGE_ELEM(src, uchar, i + 1, j);

neighborhood[0] = CV_IMAGE_ELEM(src, uchar, i + 1, j + 1);

uchar center = CV_IMAGE_ELEM(src, uchar, i, j);

uchar temp = 0;

for (int k = 0; k < 8; k++)

{

temp += (neighborhood[k] >= center) << k;

}

CV_IMAGE_ELEM(dst, uchar, i, j) = temp;

}

}

}


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容