1

我在图像中找到了阴影区域的边界,我可以在图像顶部绘制这些边界,但我想创建一个二进制图像,其中只有这些边界的像素值等于 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

这给了我这个:

嗯,这是我的第一篇文章......所以它不会让我发布图片,但希望你明白我的意思。请帮忙。对于我要完成的工作,这一直是我的眼中钉,我一直在努力避免以这种方式使用它。

4

1 回答 1

2

您应该使用sub2ind\ind2sub 来完成此操作。例如在你的情况下:

linearInd = sub2ind([m m], location(:,1),  location(:,2));
blank = zeros(m);
blank(linearInd)=1;
于 2013-05-27T03:37:51.260 回答