我在图像中找到了阴影区域的边框,我可以在图像上方绘制这些边框,但我想创建一个二进制图像,其中只有这些边框的像素值等于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
这给了我这个:
这是我的第一篇文章...所以它不会让我发布图片,但希望你明白我的意思。请帮忙。对于我想要完成的事情,这对我来说是一个棘手的问题,我一直试图避免以这种方式使用它。
答案 0 :(得分:2)
您应该使用sub2ind
\ ind2sub
来实现这一目标。例如,在您的情况下:
linearInd = sub2ind([m m], location(:,1), location(:,2));
blank = zeros(m);
blank(linearInd)=1;