this journal articleを参照してください。
は、大津閾値処理は、以下の結果が得られると一緒に[threshold = (mean + std dev)
]
を使用して、と言っています。
そして、それらなしで私は次のような結果を得るため、
。したがって
、I持っている3つの質問、
(1)バイナリしきい値設定の私の実装の主な問題は何ですか?
(2)大津閾値が本当に良い結果を出すのであれば、記事の著者は[]を使用するように提案したのはなぜですか?
(3)double
の値を大津の閾値に適用するにはどうすればよいですか?
ソースコード
Here is the GitHub repository.
以下の通りであるソースコードの最も関連する部分、
private void thresholdButton_Click(object sender, EventArgs e)
{
Bitmap color = (Bitmap)this.inputImagePictureBox.Image;
Bitmap temp = Grayscale.ToGrayscale((Bitmap)color.Clone());
ImageStatistics imgStat = new ImageStatistics(temp);
Histogram histogram = imgStat.Gray;
double meanPlusStdDev = histogram.Mean + histogram.StdDev;
OtsuThreshold otsu = new OtsuThreshold();
int thres = otsu.getOtsuThreshold(temp);//////
//otsu.Apply(temp, (int)meanPlusStdDev);
otsu.Apply(temp, thres);
thresholdedImagePictureBox.Image = temp;
}
条件が同じですか、つまりしきい値処理の前に準同型フィルタリングを適用しましたか?テスト画像を教えてください。 – Tapio
@Tapio、ここに私のHomoFilterです。http://stackoverflow.com/questions/39427106/homomorphic-filter-output – anonymous
@Tapio、テスト画像はVS2013ソリューションに組み込まれています。 – anonymous