在x值處沿y軸取一個切片,以便您有良好的邊界。然後使用「conv」找到該1-d向量(包含0和1)的卷積與奇數高斯函數的中心部分。這就像一個邊緣濾波器,但對噪聲會很強大。這種卷積會給你一堆不規則間距的峯值。找到峯值並對其進行計數。每個高峯是兩本書之間的界限。 (對不起,這個簡單的過程很難在沒有白板的情況下解釋。)
「奇數高斯函數的中心部分」=想象一個正弦函數,在正負pi處截斷。但從積極到消極的變化更接近一步功能。我想你可以通過卷積高斯和階梯函數來得到你想要的。 (再次,抱歉沒有白板。)
EDIT2:下面是一些Matlab代碼,以交互方式運行,所以你可以明白我的意思:
x=[-9.5:1:9.5];
y=[-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1]; plot(x,y,'.');
g=exp(-x.*x/8); plot(x,g,'.');
odd_g=conv(y,g);plot([-19:19],odd_g,'.')
所以,odd_g(或類似的東西)是你想要在給定的x處與圖像切片進行卷積。
peaks=conv(image_slice,odd_g);
EDIT3:假設你有
image_slice=[1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1];
,請注意我已經把在嘈雜的邊緣。對於所選擇的值,當您繪製的卷積,
plot(conv(image_slice,odd_g)
你看到在一個邊緣的噪音給人一種輕微的高峯,但它不是一個真正的邊緣一樣大。所以你可以找到峯值並丟棄任何小於某個臨界值的值。當然,選擇最適合您數據的odd_g參數。
來源
2013-10-28 20:36:47
dmm
情節'mean'(或'median')沿着所述灰度圖像的所述第二尺寸。我相信這會幫助你計算書籍。 – Shai
謝謝。我正在嘗試它。你的意思是看情節的高峯和低谷嗎? – rockinfresh
這種尋找沿着每個水平行的平均值的技術類似於我爲分割文本行所做的建議。至少你可以看到每個水平行的峯值和數值對於真實圖像來說會是什麼樣子。 http://stackoverflow.com/questions/8015001/is-there-an-efficient-algorithm-for-segmentation-of-handwritten-text/8875390#8875390 – Rethunk