**現象
影象形態學操作時候,可以通過自定義的結構元素實現結構元素對輸入影象一些物件敏感、另外一些物件不敏感,這樣就會讓敏感的物件改變而不敏感的物件保留輸出。
通過使用兩個最基本的形態學操作 – 膨脹與腐蝕,使用不同的結構元素實現對輸入影象的操作、得到想要的結果。
比如開操作,先腐蝕後膨脹,將白色的小塊去掉了
轉換二值影象
adaptivethreshold
(mat src,
// 輸入的灰度影象
mat dest,
// 二值影象
double maxvalue,
// 二值影象最大值(255)
int adaptivemethod // 自適應方法,只能其中之一 –
// adaptive_thresh_mean_c , adaptive_thresh_gaussian_c
int thresholdtype,
// 閾值型別
int blocksize,
// 塊大小
double c // 常量c 可以是正數,0,負數
)
如
adaptivethreshold
(~gray, binimg,
255, adaptive_thresh_mean_c, thresh_binary,15,
-2);
定義結構元素
mat getstructuringelement
(int shape,
size ksize,
point anchor =
point(-
1,-1));
(1)int型別的shape,元素形狀,可以是cv::morphshapes之一。第乙個引數有這幾種選項(2)size型別的ksize,結構化元素的大小。
(3)point型別的anchor,預設值(-1,-1),表示錨定位於中心。請注意,只有十字形元素的形狀取決於錨定位置。在其他情況下,錨只是調節形態學操作結果的移動量。
-(1)morph_rect:矩形結構區域。-(2)morph_cross,十字形結構區域。
-(3)morph_ellipse,橢圓結構區域,內接於矩形rect(0,0,esize.width,0.esize.height)的填充橢圓。
#include
#include
using namespace std;
using namespace cv;
intmain()
namedwindow
("src"
, cv_window_autosize)
;imshow
("src"
, src)
;/*轉化為灰度圖*/
mat gray;
if(src.
channels()
==3)else
imshow
("gray pic "
, gray)
;//轉化為二值影象
mat binimg;
adaptivethreshold
(~gray, binimg,
255, adaptive_thresh_mean_c, thresh_binary,15,
-2);
imshow
("binimg"
, binimg)
;//定義結構元素
mat hline =
getstructuringelement
(morph_rect,
size
(src.cols/16,
1),point(-
1,-1
));//橫著的結構元素
mat vline =
getstructuringelement
(morph_rect,
size(1
,src.rows /16)
,point(-
1,-1
));//豎著的結構元素
//開操作
mat xdst;
mat ydst;
morphologyex
(binimg, xdst, cv_mop_open, hline)
;morphologyex
(binimg, ydst, cv_mop_open, vline)
;//優化後輸出
基於形態學眼底血管提取
形態學是一種比較新的影象處理方法,它可以以一種特定的形態和結構元素作為樣本提取出對應的形狀,從而得到我們所需要的結構,且它包含有四種基本操作 膨脹 腐蝕 以及開閉操作。基於這些操作,我們可以實現對眼底血管的提取。laplace運算元是常用的邊緣檢測運算元,是一種簡單的各向同性的微分運算元,它的作用是...
opencv形態學操作,提取水平與垂直線
可做驗證碼識別 mat temp,temp1 cvtcolor src,temp,cv bgr2gray imshow temp temp adaptivethreshold temp,temp1,255,adaptive thresh mean c,thresh binary,15,2 轉換為二值...
opencv學習 形態學
void cvdilate const cvarr src,cvarr dst,iplconvkernel element null,int iterations 1 void cverode const cvarr src,cvarr dst,iplconvkernel element null,...