在matlab中将行中最小值的每个元素的值设置为1,将其他元素的值设置为0?

时间:2012-01-22 07:55:13

标签: matlab image-processing

这就是我在MATLAB中尝试做的事情,但似乎无法实现它

对于已过滤图像中的每一行,请指定一个值 一个到具有最小值的像素 在该行中,其他像素为零

casia

2 个答案:

答案 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);

当我在你链接的图片上运行时,我得到了

enter image description here

这表明中值滤波有很多边界效应。删除边框10像素,即

img = img(10:end-9,10:end-9);

再次运行代码,我发现

enter image description here

这更有意义。

答案 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