Почему бинаризация изображения показывает более низкие результаты?
См. this journal article.
В последнем абзаце раздела 4.1 (предварительной обработки) говорит, что,
Используя [threshold = (mean + std dev)
] наряду с Оцу Thresholding дает следующий результат,
.
И, без них я получаю следующий результат,
.
Поэтому у меня есть три вопроса,
(1) Какова главная проблема с моей реализации бинарного Thresholding?
(2) Если Otsu Threshold действительно дает хороший результат, почему авторы статьи предложили использовать [threshold = (mean + std dev)
]?
(3) Как я могу применить значение double
как порог Otsu?
Исходный код
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