我有這樣的灰度圖像:如何檢測opencv(C++)中的異常如果閾值不夠好?
我想檢測這種圖像的異常。在第一幅圖像(左上角)上,我想檢測三個點,在第二個(右上角)上有一個小圓點和一個「霧區」(右下角),最後一個在圖像中間的某處也是一個小點。
正常的靜態tresholding對我來說沒有問題,大津的方法總是最好的選擇。有沒有更好,更強大或更智能的方法來檢測這種異常?在Matlab中,我使用了類似Frangi Filtering(特徵值過濾)的東西。任何人都可以建議好的處理算法來解決像這樣的表面上的異常檢測問題嗎?
編輯:添加另一個圖像具有顯着的異常:
使用@Tapio的頂帽過濾和對比度adjustement。 由於@Tapio爲我們提供了一個很好的主意,就像我在開始時問的那樣,如何增加表面上的異常對比度,我向你們提供了一些結果。我曾經和這樣的形象:
這裏是我的代碼,我如何使用高頂禮帽過濾和對比adjustement:
kernel = getStructuringElement(MORPH_ELLIPSE, Size(3, 3), Point(0, 0));
morphologyEx(inputImage, imgFiltered, MORPH_TOPHAT, kernel, Point(0, 0), 3);
imgAdjusted = imgFiltered * 7.2;
其結果是在這裏:
有仍然質疑如何從最後的圖像中分割出異常?所以如果有人有想法如何解決它,只要把它! :) ??
計算灰度圖像的平均值。高於平均值某個百分比的像素可以被聲明爲異常值 –
@JeruLuke:這是一個「模式識別介紹」級別的答案,但對大津方法和特徵值過濾的參考告訴我,我們並沒有在看那個。 – MSalters
您能否提供更多關於我應該關注的技巧以及如何進行模式識別?我是否也應該考慮一些「機器學習」的東西? – jok23