日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV笔记(十五)——使用Laplace算子进行图像的边缘检测

發(fā)布時(shí)間:2023/11/29 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV笔记(十五)——使用Laplace算子进行图像的边缘检测 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在筆記十四中,我們使用了Sobel算子對(duì)圖像進(jìn)行邊緣檢測(cè),理論依據(jù)是像素變化最快的地方最有可能是邊緣處,所以使用sobel算子對(duì)圖像做微分,得到的結(jié)果圖像當(dāng)中灰度較大的區(qū)域,即為邊緣處。

在這里,我們使用Laplace算子來做邊緣檢測(cè),也是類似的道理,只不過換成了二階微分,在一階微分的極大值的地方,二階微分為零。我們以二階微分為零的區(qū)域作為邊緣。當(dāng)然了一階微分極小值的地方,即圖像變化很慢很慢的地方,二階微分也可能為零。所以我們還需要進(jìn)行額外的濾波。

?

在理論上是這樣,但是在實(shí)現(xiàn)上,OpenCV使用了類似sobel算子的方法,并且在Laplace算子的運(yùn)用中,一行二階微分和列二階微分的加法結(jié)合在一起,用一個(gè)kernel計(jì)算完畢。

?

先看看OpenCV當(dāng)中運(yùn)用Laplace算子的函數(shù):

void cv::Laplacian( InputArray _src, OutputArray _dst, int ddepth, int ksize,?double scale, double delta, int borderType )

使用方式和Sobel相似。

部分實(shí)現(xiàn)代碼如下:

1 if( ksize == 1 || ksize == 3 ) 2 { 3 float K[2][9] = 4 {{0, 1, 0, 1, -4, 1, 0, 1, 0}, 5 {2, 0, 2, 0, -8, 0, 2, 0, 2}}; 6 Mat kernel(3, 3, CV_32F, K[ksize == 3]); 7 if( scale != 1 ) 8 kernel *= scale; 9 filter2D( src, dst, ddepth, kernel, Point(-1,-1), delta, borderType ); 10 }

?

OpenCV中使用Laplacian的例子:

1 int main( int, char** argv ) 2 { 3 4 Mat src, src_gray, dst; 5 int kernel_size = 3; 6 int scale = 1; 7 int delta = 0; 8 int ddepth = CV_16S; 9 const char* window_name = "Laplace Demo"; 10 11 /// Load an image 12 src = imread( argv[1] ); 13 14 if( !src.data ) 15 { return -1; } 16 17 /// Remove noise by blurring with a Gaussian filter 18 GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT ); 19 20 /// Convert the image to grayscale 21 cvtColor( src, src_gray, COLOR_RGB2GRAY ); 22 23 /// Create window 24 namedWindow( window_name, WINDOW_AUTOSIZE ); 25 26 /// Apply Laplace function 27 Mat abs_dst; 28 29 Laplacian( src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT ); 30 convertScaleAbs( dst, abs_dst ); 31 32 /// Show what you got 33 imshow( window_name, abs_dst ); 34 35 waitKey(0); 36 37 return 0; 38 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/nipan/p/4147302.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的OpenCV笔记(十五)——使用Laplace算子进行图像的边缘检测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。