如何折叠距离?

时间:2017-04-18 09:43:33

标签: matlab

使用此代码我试着说,如果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)

2 个答案:

答案 0 :(得分:0)

我不明白你想做什么。

最初c全部为零,除了250的那一行。cumsum将一行更改为1..500,但> 0将其更改为仅那些......: - S

在计算c后更新D 。这是你的问题吗?

除此之外,循环缓慢,复杂且不必要。尝试这样的事情:

c(D > 0 & D < 10) = 1;

答案 1 :(得分:0)

我认为你的欧几里德距离函数并不是你想要的。我在代码中更改了一行来执行我认为您想要执行的操作。我检测像素并从这些像素到垂直线绘制垂线

drawImage()