【发布时间】:2017-06-02 08:20:03
【问题描述】:
我正在使用以下 MATLAB 代码进行 Niblack 二值化。
mean= averagefilter2(image1);
meanSquare = averagefilter2(image1.^2);
standardDeviation = (meanSquare - mean.^2).^0.5;
binaryImage = image1 >= (mean + k_threshold * standardDeviation);
function img=averagefilter2(image1)
meanFilter = fspecial('average',[60 60]);
img = imfilter (image1,meanFilter);
end
(忽略黑色边框..只是为了突出图像边缘的白色补丁)
也就是说,在边缘附近,一些数据像素丢失并变成白色(顶部和右侧边缘的白色块)。我在这个实现中的任何地方都错了吗?是否有更好的“MATLAB 方式”来实现它,或者我应该使用嵌套循环手动计算平均值和标准偏差?
【问题讨论】:
-
我建议你添加一个minimal reproducible example,意思是完整的代码来复制你的结果
-
抱歉错误。我现在已经更新了。
-
你试过我的建议了吗?我敢打赌,白色大约是 30 像素宽(第二个滤镜的一半)
-
是的。非常感谢。它现在运行良好。
标签: image matlab image-processing