簡體   English   中英

Android中Canny邊緣檢測器的快速自適應閾值

[英]Fast Adaptive Threshold for Canny Edge Detector in Android

根據我的研究,Canny Edge Detector對於檢測圖像邊緣非常有用。 在我付出很多努力之后,我發現OpenCV函數可以做到這一點,也就是說

    Imgproc.Canny(Mat image, Mat edges, double threshold1, double threshold2)

但是對於低閾值和高閾值,我知道不同的圖像有不同的閾值,所以我知道是否有任何快速自適應閾值方法可以根據不同的圖像自動分配低和高閾值?

這相對容易。 查看關於該主題的這篇較舊的SO帖子

一種快速方法是計算當前圖像的平均值和標准偏差,並對圖像應用+/-一個標准偏差。

C ++中的示例如下:

Mat img = ...;
Scalar mu, sigma;
meanStdDev(img, mu, sigma);

Mat edges;
Canny(img, edges, mu.val[0] - sigma.val[0], mu.val[0] + sigma.val[0]);

另一種方法是計算圖像的中值並且目標是中值之上和之下的比率(例如, 0.66*medianValue1.33*medianValue )。

希望有所幫助!

Opencv具有自適應閾值功能。 使用OpenCV4Android,它是這樣的:

Imgproc.adaptiveThreshold(src, dst, maxValue, adaptiveMethod, thresholdType, blockSize, C);

一個例子:

Imgproc.adaptiveThreshold(mInput, mInput, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 15, 4);

至於如何選擇參數,您必須閱讀文檔以獲取更多詳細信息。 為每個圖像選擇正確的閾值是一個完全不同的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM