一次改变一组像素值MATLAB

时间:2013-05-27 03:32:57

标签: image matlab pixels

我在图像中找到了阴影区域的边框,我可以在图像上方绘制这些边框,但我想创建一个二进制图像,其中只有这些边框的像素值等于1。某些原因,当我尝试使用位置数组作为索引时,它不会保持行值被隔离。相反,它正在替换整个块中的像素(每个x值都包含所有y值)。但是,使用相同的指数进行绘图可以得到正确的形状。例如,

>> m=20;
>> location = [5 6;5 7;5 8;5 9;5 10; 5 11;5 12; 5 13; 5 14;5 15;5 5;6 5; 7 5;8 5;9 5;10 5;11 5; 12 5;13 5;14 5;15 5]

location =

     5     6
     5     7
     5     8
     5     9
     5    10
     5    11
     5    12
     5    13
     5    14
     5    15
     5     5
     6     5
     7     5
     8     5
     9     5
    10     5
    11     5
    12     5
    13     5
    14     5
    15     5

>> blank = zeros(m);
>> blank(matrix(:,1),matrix(:,2))=1;
>> figure
>> imagesc(blank)
>> colormap gray
>> hold on
>> plot(matrix(:,2), matrix(:,1), 'g', 'Linewidth', 3)
>> axis image

这给了我这个:

这是我的第一篇文章...所以它不会让我发布图片,但希望你明白我的意思。请帮忙。对于我想要完成的事情,这对我来说是一个棘手的问题,我一直试图避免以这种方式使用它。

1 个答案:

答案 0 :(得分:2)

您应该使用sub2ind \ ind2sub来实现这一目标。例如,在您的情况下:

linearInd = sub2ind([m m], location(:,1),  location(:,2));
blank = zeros(m);
blank(linearInd)=1;