您好,登錄后才能下訂單哦!
在opencv中scharr濾波器是配合sobel算子的運(yùn)算而存在的。當(dāng)sobel內(nèi)核為3時(shí),結(jié)果可能會(huì)產(chǎn)生比較明顯的誤差,針對(duì)這一問題,Opencv提供了scharr函數(shù)。該函數(shù)只針對(duì)大小為3的核,并且運(yùn)算速率和sobel函數(shù)一樣快,結(jié)果更加精確,但抗噪性不如sobel函數(shù)。
使用scharr濾波器計(jì)算x或y方向的圖像差分,它的參數(shù)變量和sobel一樣。
函數(shù):Imgproc.Scharr(Mat src, Mat dst, int ddepth, int dx, int dy, double scale, double delta, int borderType)
參數(shù)說明:
src:源圖像
dst:檢測結(jié)果圖像
ddepth:輸出圖像的深度
dx:x方向上的差分階數(shù)
dy:y方向上的差分階數(shù)
scale:縮放因子
delta:結(jié)果存入輸出圖像前可選的delta值,默認(rèn)為0
borderType:邊界模式,默認(rèn)BORDER_DEFAULT
示例代碼:
public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat src = Imgcodecs.imread("F:\\2011031213205880528.jpg"); Mat dst = src.clone(); Mat dstx = src.clone(); Mat dsty = src.clone(); Imgproc.GaussianBlur(src, dst, new Size(3, 3), 0); Imgproc.cvtColor(dst, dst, Imgproc.COLOR_RGB2GRAY); Imgproc.Scharr(dst, dstx, -1, 1, 0, 1, 0, Core.BORDER_DEFAULT); Imgcodecs.imwrite("F:\\dstx.jpg", dstx); Imgproc.Scharr(dst, dsty, -1, 0, 1, 1, 0, Core.BORDER_DEFAULT); Imgcodecs.imwrite("F:\\dsty.jpg", dsty); Core.addWeighted(dstx, 0.5, dsty, 0.5, 0, dst); Imgcodecs.imwrite("F:\\dst.jpg", dst); }
源圖像:
X方向的scharr:
Y方向的scharr:
合并梯度后:
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。