問題

什麼是可能模糊和不均勻亮度的快速可靠的閾值影象?

示例(模糊但亮度均勻):

enter image description here

由於影象不能保證亮度均勻,使用固定閾值是不可行的.自適應閾值工作正常,但由於模糊,它在功能中建立了斷裂和扭曲(這裡,重要功能是數獨數字):

enter image description here

我也嘗試過使用Histogram Emendia(使用OpenCV的equalizeHist函式).它增加對比而不減少亮度的差異.

我找到的最好的解決方案是透過形態閉合(信用此帖子)來劃分影象,使亮度統一,然後重整,然後使用固定閾值(使用Otsu的演算法來選擇最佳閾值水平):

enter image description here

這是Android的OpenCV中的程式碼:

 Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_ELLIPSE, new Size(19,19));
Mat closed = new Mat(); // closed will have type CV_32F
Imgproc.morphologyEx(image, closed, Imgproc.MORPH_CLOSE, kernel);
Core.divide(image, closed, closed, 1, CvType.CV_32F);
Core.normalize(closed, image, 0, 255, Core.NORM_MINMAX, CvType.CV_8U);
Imgproc.threshold(image, image, -1, 255, Imgproc.THRESH_BINARY_INV
    +Imgproc.THRESH_OTSU); 
 

這很好,但關閉操作非常慢.降低結構元素的大小增加了速度,但降低了精度.

編輯:根據DCS的建議,我嘗試使用高通濾波器.我選擇了Laplacian過濾器,但我希望使用Sobel和Scharr過濾器得到類似的結果.過濾器在不包含特性的區域中找到高頻噪聲,並由於模糊而遭受類似於自適應閾值的扭曲.結束操作也需要大約一段時間.這是一個帶有15x15過濾器的示例:

enter image description here

編輯2:基於AruniRC的答案,我在影象上使用Canny邊緣檢測與建議的引數:

 double mean = Core.mean(image).val[0];
Imgproc.Canny(image, image, 0.66*mean, 1.33*mean);
 

我不知道如何可靠地自動調整引數以獲取連線數字.

enter image description here

  最佳答案

使用Vaughn Cato和Sheraot的建議,我在關閉它之前縮小了影象,然後將封閉影象縮小到常規大小.我還按比例縮小了核心大小.

 Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_ELLIPSE, new Size(5,5));
Mat temp = new Mat(); 

Imgproc.resize(image, temp, new Size(image.cols()/4, image.rows()/4));
Imgproc.morphologyEx(temp, temp, Imgproc.MORPH_CLOSE, kernel);
Imgproc.resize(temp, temp, new Size(image.cols(), image.rows()));

Core.divide(image, temp, temp, 1, CvType.CV_32F); // temp will now have type CV_32F
Core.normalize(temp, image, 0, 255, Core.NORM_MINMAX, CvType.CV_8U);

Imgproc.threshold(image, image, -1, 255, 
    Imgproc.THRESH_BINARY_INV+Imgproc.THRESH_OTSU);
 

下面的影象顯示了3種不同方法的側面結果:

左 – 常規大小關閉(432畫素),大小19核心

中半尺寸關閉(216畫素),大小9核心

右 – 四分之一大小關閉(108畫素),大小5核心

enter image description here

影象質量隨著用於關閉的影象的大小變小而惡化,但惡化不足以影響特徵識別演算法.四分之一尺寸關閉的速度略高於16倍,即使調整大小,這表明關閉時間大致與影象中畫素的數量成正比.

關於如何進一步改進這一想法(透過進一步降低速度或減少影象質量的惡化)的任何建議都是非常受歡迎的。

  相同標籤的其他問題

opencvimage-processingthreshold