【发布时间】:2014-10-20 04:45:52
【问题描述】:
我正在尝试实现 Sauvola & Pietaksinen 方法,以通过局部阈值对图像执行二值化。
该方法将每个像素(x,y)的阈值定义为T(x,y) = mean(x,y)*[1+k(std(x,y)/R-1)],为在“自适应文档图像二值化”一文中。在 (x,y) 的邻域中计算平均值和标准差。 k 和 R 建议分别为 0.5 和 128。
这是我的代码的样子:
filtered = colfilt(image, [n n], "sliding", @(x) (mean(x).*(1+0.5*(std(x)/128 - 1))));
image(image < filtered) = 0;
image(image >= filtered) = 255;
但是,对于我测试的所有图像,结果都是完全空白的图像,这显然是不正确的。我想我一定是误用了 colfilt 函数中的某些元素,但是我对 Octave 太陌生了,直到现在才找到它。
有人可以帮我吗?
提前致谢。
【问题讨论】:
-
您是否尝试过缩放图像 (
imshow(image,[]))?我同意@Andy。您不应该覆盖函数名称(如图像)。
标签: image-processing octave threshold