这就是我在MATLAB中尝试做的事情,但似乎无法实现它
对于已过滤图像中的每一行,请指定一个值 一个到具有最小值的像素 在该行中,其他像素为零
答案 0 :(得分:3)
这是一个解决方案:
img = imread('http://i.stack.imgur.com/tY3YE.jpg');
img = rgb2gray(img); %# transform jpeg color image to grayscale
minValue = min(img,[],2);
%# set the pixels equal to the minimum value to 1
bw = bsxfun(@eq,img,minValue);
当我在你链接的图片上运行时,我得到了
这表明中值滤波有很多边界效应。删除边框10像素,即
img = img(10:end-9,10:end-9);
再次运行代码,我发现
这更有意义。
答案 1 :(得分:0)
我认为你可以通过以下方式实现目标:
% Obtain the minimum in each row
mn = min(I,[],2);
% Set the pixels that are minimum to one, others to zero
eq = I == repmat(mn,1,size(I,2));
此代码假定您的图像位于I
。