MATLAB 图片画线(简简单单一根线)

1.hua.m

        主画线函数,rm是传过来的图片(灰度图像),(a,b),(c,d)为线的端点。

        由于默认生成灰度图像全黑,所以这里直接将像素值改为1,画白线。

        单独处理竖线和横线的情况。

        为防止单独沿着一个坐标计算另一个坐标时,斜率过大或者过小导致短线的情况,此处分别沿x与y绘制两次。

        因为“:”只能朝向一个方向,此处单独处理。(什么,你问我为什么不用x:y:z,甚至没用else,只能说这是为了为了方便XXXX看懂)。

function img=hua(a,b,c,d,rm)
img=rm;
xk=(c-a);
yk=(d-b);
if xk==0
    if yk>0        
        for i=b:d
            img(i,a)=1;
        end
    end
    if yk<0   
        for i=d:b
            img(i,a)=1;
        end
    end
return
end
if yk==0
    if xk>0
        for i=a:c
            img(b,i)=1;
        end
    end
    if xk<0
        for i=c:a
            img(b,i)=1;
        end
    end
return
end
ykk=(yk/xk);
if a<c
    y=b;
    for i=a:c
        img(round(y),i)=1;
        y=(y+ykk);
    end
end
if a>c
    y=d;
    for i=c:a
        img(round(y),i)=1;
        y=(y+ykk);
    end
end
xkk=(xk/yk);
if b<d
    x=a;
    for i=b:d
        img(i,round(x))=1;
        x=(x+xkk);
    end
end
if b>d
    x=c;
    for i=d:b
        img(i,round(x))=1;
        x=(x+xkk);
    end
end

2.huaxian.m

        没什么东西,分配个300×300的内存,调用hua()再测量运行时间,顺便显示出画出来的图像(bug欢迎指正)

function huaxian(a,b,c,d)
img=zeros(300,300);
t0=cputime;
img=hua(a,b,c,d,img);
t1=cputime;
time=t1-t0
figure;imshow(img)

3.suijihuaxian.m

用最笨的方法造出两个坐标,调用huaxian()

function suijihuaxian()
a=round(300*rand())
b=round(300*rand())
c=round(300*rand())
d=round(300*rand())
huaxian(a,b,c,d)

4.结果,随机画了几条可以看出没有断线之类的········

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值