使用此代码我试着说,如果c的点与c的垂直线之间的距离小于10(例如),包含该距离的所有像素都等于1.但是此代码为我提供1沿着垂直线。我该如何改进代码?
clear all
close all
c=zeros(500,500);
c(:,250)=1;
dim=size(c);
D = bwdist(cumsum(c, 2,'reverse')> 0, 'euclidean'); %Sorry I forgot 'reverse'
c(200,400)=1;
c(400,255)=1
c(250,252)=1
c(300,258)=1
c(100,270)=1
c(130,256)=1
c(310,260)=1
figure, imagesc (c)
for i=1:dim(1)
for j= 1: dim(2)
if D(i,j)>0 & D(i,j)<10
c(i,j)=1;
end
end
end
figure, imagesc(c)
答案 0 :(得分:0)
我不明白你想做什么。
最初c
全部为零,除了250的那一行。cumsum
将一行更改为1..500
,但> 0
将其更改为仅那些......: - S
在计算c
后更新D
。这是你的问题吗?
除此之外,循环缓慢,复杂且不必要。尝试这样的事情:
c(D > 0 & D < 10) = 1;
答案 1 :(得分:0)
我认为你的欧几里德距离函数并不是你想要的。我在代码中更改了一行来执行我认为您想要执行的操作。我检测像素并从这些像素到垂直线绘制垂线
drawImage()