2011-02-27 68 views
2

我正在考慮一個圖像處理項目。 對於我的項目的某些部分來說,要找到好的閾值,我需要找到圖像直方圖的峯值和谷值。 我正在用C#.net 來實現我的項目,但是我需要使用任何語言(Java,C,C++,...)中的算法或示例代碼來理解它的邏輯。我可以通過我自己轉換爲C#。 任何文檔或算法或代碼段... 謝謝在圖像中發現峯值直方圖

+1

你可以請示例直方圖? – 2011-02-27 18:31:54

+0

您可以使用任何數據序列製作直方圖。也許你正在考慮從你的圖像派生的特定直方圖。哪一個? – 2011-02-27 18:40:39

回答

1

如果您已經計算出您的直方圖,找到峯值和谷值是計算上微不足道的(循環它並找到局部極值)。不尋常的是找到「好」的高峯和低谷做一些分割/閾值。但這不是編碼問題,而是建模問題。你可以爲它google

如果你想要一個簡單的配方,並且如果你知道你的直方圖具有「基本上」兩個峯值和中間的一個谷(「雙峯」直方圖)並且你想要找到那個谷,我曾經實現了以下特設的過程,相對成功:

  • 計算直方圖(相對最大值/最小值,其中包括邊界)
  • 如果只有兩個極大值,而如果在那些最大值之間,只有所有的極值一個地方最低限度,我們找到了山谷。把它返還。
  • 否則,平滑直方圖(例如移動平均值)並轉到第一步。
+0

我真的不知道如何找到第二個峯值,因爲第二個峯值不是第二個峯值,而我們有這麼多小的小峯值,我們不想要它們。我谷歌,但我找不到有關算法或代碼的任何事情。 – user194611 2011-02-28 05:41:56

+0

「小山峯」隨着平滑消失。在這種方法中,您可以平滑直方圖,直到只有兩個峯值(最大值)。 – leonbloy 2011-02-28 15:17:02

4

二進制閾值很難擊敗Ohtsu's Method。即使你堅持自己實施本地極值搜索,Ohtsu的方法也會給你一個很好的結果來比較。