亮斑斑點的成像檢測

2021-10-20 06:28:16 字數 2695 閱讀 9687

紙盒表面可能存在髒汙煙渣等,如果超過一定面積,需檢測為不良品。

檢測如紅框所示的異常點,異常原因傳送帶髒汙,有煙渣覆蓋在菸盒表面。

如下所示的成像, 上部是二次求導, 下部是影象的灰度值。

log運算元即高斯拉普拉斯, 先進行laplace再與影象進行平滑處理。

dog運算元即高斯查分

log曲線其實是兩條邊界上產生的log函式的疊加,當兩條邊界足夠小時,在該尺度脈衝下就被作為了blob,這時候log曲線的極值就對應著blob的中心。著尺度的不斷增大,log曲線由雙波谷逐漸融合成單波谷,但是響應的幅值越來越弱,因為隨著尺度的增加, log運算元的最大幅度逐漸的減少,穩定的訊號,相應的幅度與方差成正比,可以消除尺度的影響。

使用log運算元進行blob檢測時,首先在不同尺寸上對影象進行log,然後檢測在尺度空間和影象空間都是極值的點,就是blob區域的中心點。

a: 首先使用不同尺度的高斯運算元對影象進行平滑

b: 其次計算相鄰尺度下平滑影象的差分影象(dog空間)

c: 最後在dog空間尋找極值點

// 參考 

mat create_log(int size, double sigma)

}double mean = sum/(size*size);

for(int i = 0; i < h.rows; i++)

}return h;

}

如下所示, 進行不同引數的除錯, 無法有效的檢測。

構建不同方向的濾波, 強化灰度發生變化的位置。

//1. 單通道的grayimg

cv::mat grayimg;

getgrayimg(srcimg, grayimg);

//2. 在順45方向的filter2d

cv::mat filtertlimg;

cv::filter2d(grayimg, filtertlimg, grayimg.depth(), kerneltl);

cv::convertscaleabs(filtertlimg, filtertlimg);

//3. 在逆45方向的filter2d

cv::mat filtertrimg;

cv::filter2d(grayimg, filtertrimg, grayimg.depth(), kerneltr);

cv::convertscaleabs(filtertrimg, filtertrimg);

//4. 在順45方向的filter2d

cv::mat filterblimg;

cv::filter2d(grayimg, filterblimg, grayimg.depth(), kernelbl);

cv::convertscaleabs(filterblimg, filterblimg);

//5. 在逆45方向的filter2d

cv::mat filterbrimg;

cv::filter2d(grayimg, filterbrimg, grayimg.depth(), kernelbr);

cv::convertscaleabs(filterbrimg, filterbrimg);

//6. 各個方向銳化的相加

/*roi的 highlight 的引數*/

message hightlightnparea

構建不同方向的濾波, 銳化灰度變化區域。如果有底紋, 需要進行底紋背景的弱化

CSS中的形狀斑點

我們僅介紹了svg中的形狀變形 其中形狀從一種變為另一種。讓我們看一下彼此斑點的形狀!你知道,粘糊糊的浮腫效果就像表面上的汞滴一樣。我不確定是誰首先在網上發現了這一點,但是我見過的第一處是lucas bebber的演示 請參閱codepen上的lucas bebber lbebber 撰寫的pen ...

燈亮的個數

一條長廊裡依次裝有n 1 n 65535 盞電燈,從頭到尾編號1 2 3 n 1 n。每盞電燈由乙個拉線開關控制。開始,電燈全部關著。有n個學生從長廊穿過。第乙個學生把號碼凡是1的倍數的電燈的開關拉一下 接著第二個學生把號碼凡是2的倍數的電燈的開關拉一下 接著第三個學生把號碼凡是3的倍數的電燈的開關...

計算亮燈的個數

描述 一條長廊裡依次裝有n 1 n 65535 盞電燈,從頭到尾編號1 2 3 n 1 n。每盞電燈由乙個拉線開關控制。開始,電燈全部關著。有n個學生從長廊穿過。第乙個學生把號碼凡是1的倍數的電燈的開關拉一下 接著第二個學生把號碼凡是2的倍數的電燈的開關拉一下 接著第三個學生把號碼凡是3的倍數的電燈...