opencv-圖像處理api及效果展示

濾波【線性;非線性】 - [含義:不能損壞圖像的輪廓以邊緣等重要信息;使圖像清晰視覺(jué)效果好]

測(cè)試原始矩陣.png

平滑濾波: 功能:一類是模糊;另一類是消除噪音

平滑分兩種:
  ·線性濾波 :高斯噪音處理比較好,噪音的值不是很大【如果處理散粒噪音只是讓它變得柔和】
  ·非線性濾波 :散粒噪音處理比較好,噪音值很大,很孤立
  • 方框?yàn)V波:BoxBlur
方框?yàn)V波非歸一化.png
前后對(duì)比.png

結(jié)論:像素點(diǎn)變大,意味著圖像模糊了

  • 均值濾波:Blur 其實(shí)是方框?yàn)V波的歸一化處理【歸一化例子:歸一化為20x80像素的圖像,即經(jīng)切割后的特征塊圖像若尺寸不為20x80像素,就把它們統(tǒng)一歸一化為 20x80像素】
均值.png
前后對(duì)比.png
缺點(diǎn)演示.png
結(jié)論:模糊效果比較好,原理是局部求均值起到模糊。缺點(diǎn):如果局部有高頻噪音,就會(huì)對(duì)局部像素影響較大;如上帶雪花的圖像
  • 高斯濾波:GaussianBlur 和前兩種算法的區(qū)別;通過(guò)一個(gè)掩膜mask遍歷圖像中每個(gè)像素進(jìn)行卷積然后替代它
高斯.png
前后對(duì)比.png
結(jié)論:相對(duì)于前兩中平滑,高斯平滑更能保留細(xì)節(jié),處理后的像素值更加接近原像素
  • 中值濾波:medianBlur 含義:用領(lǐng)域的中值取替代遍歷到的像素
    中值.png
前后效果.png
結(jié)論:避開(kāi)了大量的散粒噪音
  • 雙邊濾波:bilateralFilter
/*
    參三:像素領(lǐng)域的直徑
    參四:在像素領(lǐng)域中,這個(gè)值越大混合的顏色就越寬廣
    參五:數(shù)值越大意味著越遠(yuǎn)的像素會(huì)互相影響
*/
bilateralFilter(srcImg, g_sourceImg, 20, 70, 10);
左上是原圖-右上是中值濾波-下圖是雙邊濾波.png

結(jié)論:雙邊濾波在去除散粒噪音的同時(shí)還能保留邊緣細(xì)節(jié)信息。而這個(gè)時(shí)候我們的中值濾波的效果則還帶模糊。

形態(tài)學(xué)濾波【平滑作用;且不改變面積】 腐蝕-erode;膨脹-dilate;開(kāi)閉運(yùn)算;頂帽;黑帽;形態(tài)學(xué)梯度

含義介紹

  • 腐蝕:突出圖像暗的區(qū)域;侵蝕亮的區(qū)域
  • 膨脹:突出圖像亮的區(qū)域;侵蝕暗的區(qū)域
  • 開(kāi)運(yùn)算:先腐蝕后膨脹;將原圖小型亮處的部分排除
  • 閉運(yùn)算:先膨脹后腐蝕;將原圖小型暗處部分排除
  • 頂帽:原圖像矩陣減去開(kāi)運(yùn)算,得到輪廓邊緣更亮細(xì)節(jié)
  • 黑帽:閉運(yùn)算減去原圖像矩陣,得到輪廓邊緣更暗細(xì)節(jié)(為什么不是閉-原;因?yàn)樵桨档南袼刂翟叫?,越亮的像素值越大?/li>
  • 形態(tài)學(xué)梯度:膨脹圖減去腐蝕圖的差:突出邊緣輪廓
    • 形態(tài)學(xué)濾波使用morphologyEx函數(shù),傳入不同的枚舉值來(lái)執(zhí)行以上6種算法
/** morphologyEx 枚舉值
    -MORPH_ERODE 腐蝕
    -MORPH_DILATE 膨脹
    -MORPH_OPEN 開(kāi)運(yùn)算
    -MORPH_CLOSE 閉運(yùn)算
    -MORPH_GRADIENT 形態(tài)學(xué)梯度
    -MORPH_TOPHAT 頂帽
    -MORPH_BLACKHAT 黑帽
 */
 int w_h = 3;//傳進(jìn)來(lái)的數(shù) 先轉(zhuǎn)成int整型變量
/**
  參二:內(nèi)核尺寸
  參三:錨點(diǎn) 默認(rèn)是 (-1,-1),為中心
*/
 Mat element = getStructuringElement(MORPH_RECT, cv::Size(w_h * 2 +1,w_h *2 +1),cv::Point(w_h,w_h));
 morphologyEx(g_sourceImg, dstImg, type, element);
腐蝕-膨脹-閉運(yùn)算-開(kāi)運(yùn)算-頂帽-黑帽-形態(tài)學(xué)梯度 效果.png

漫水填充floodFill 含義:用特定的顏色填充連通區(qū)域,效果和photoshop魔術(shù)棒類似;用處:用來(lái)標(biāo)記或分離圖像的一部分;用來(lái)制作掩膜

注意:漫水填充設(shè)置的g_maskImage必須是比原圖的size大出2,也只能是2,cv::size(g_sourceImg.rows + 2, g_sourceImg.cols + 2)

//g_maskImage 掩膜
g_maskImage.create(g_sourceImg.rows + 2, g_sourceImg.cols + 2, CV_8UC1);
g_maskImage = Scalar::all(0);
 cv::Rect ccomp;//定義重繪制區(qū)域的最小邊界矩形區(qū)域
//閾值處理
 threshold(g_maskImage, g_maskImage, 1, 128, THRESH_BINARY);
/*漫水填充
  參二:掩膜
  參三:seek選擇點(diǎn),也就是鼠標(biāo)點(diǎn)擊觸碰要填充的點(diǎn)
  參四:newVal 填充的顏色
  參五:cv::Rect**類型 ,重繪區(qū)域的最小邊界矩形
 參六:和觀察點(diǎn)顏色負(fù)差最大值
 參七:和觀察點(diǎn)顏色正差最大值
*/
floodFill(dst, g_maskImage, seed, newVal,&ccomp,Scalar(LowDifference,LowDifference,LowDifference),Scalar(UpDifference,UpDifference,UpDifference));
漫水填充效果

圖像金字塔reSize 含義:對(duì)圖像大小進(jìn)行調(diào)整

  • 兩種大小變換方式
resize(g_sourceImg, g_dstImg, cv::Size(),size.width,size.height,INTER_LINEAR); // 按照比例縮放
resize(g_sourceImg, g_dstImg, g_dstImg.size(),INTER_LINEAR);//按照固定cv::size縮放

閾值化:threshold 概念:THRESH_BINARY模式 設(shè)定閾值大于遍歷的像素時(shí)設(shè)置255,小于閾值設(shè)置為0;用處:常常作為掩膜

注意:輸入的原圖需要是單通道,深度為8或32位

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

相關(guān)閱讀更多精彩內(nèi)容

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