博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab练习程序(生成希尔伯特曲线)
阅读量:5739 次
发布时间:2019-06-18

本文共 1341 字,大约阅读时间需要 4 分钟。

能够使用这样一条线遍历图像中所有的像素,不过这里没有这样做,而只是生成了这样一条曲线。

程序中h,w是最终图像的高和宽,n为希尔伯特曲线阶数。

这里如果n等于log2(h)或log2(w),则图像就全为白了,也算是正好遍历所有像素了。

当然,n很大的话,图像也是全为白的,不过,那样不算正好遍历吧。

代码中生成曲线的核心函数可以在。

生成图像如下:

matlab代码如下:

main.m

clear all;close all;clc;h=256;w=256;n=5;   imgn=zeros(h,w);[x,y]=hilbert(n);       x=floor((x+0.5)*w)+1;y=floor((y+0.5)*h)+1;l=length(x);for i=1:l-1    imgn=drawline(imgn,x(i),y(i),x(i+1),y(i+1));  endimshow(imgn)

hilbert.m

function [x,y] = hilbert(n)%HILBERT Hilbert curve.%% [x,y]=hilbert(n) gives the vector coordinates of points%   in n-th order Hilbert curve of area 1.%% Example: plot of 5-th order curve%% [x,y]=hilbert(5);line(x,y)%%   Copyright (c) by Federico Forte%   Date: 2000/10/06 if n<=0  x=0;  y=0;else  [xo,yo]=hilbert(n-1);  x=.5*[-.5+yo -.5+xo .5+xo  .5-yo];  y=.5*[-.5+xo  .5+yo .5+yo -.5-xo];end

drawline.m

function img=drawline(img,x1,y1,x2,y2)   %因为图像坐标和数学函数坐标y轴朝向相反,所以这里所有y变量取相反数    y1=-y1;    y2=-y2;        if x1~=x2        k=(y2-y1)/(x2-x1);        b=y1-k*x1;        mi=min(x1,x2);        ma=max(x1,x2);        for i=mi:ma            img(-round(i*k+b),i)=1;         end    end        if y1~=y2        k=(x2-x1)/(y2-y1);        b=x1-k*y1;          mi=min(y1,y2);        ma=max(y1,y2);        for i=mi:ma            img(-i,round(i*k+b))=1;         end            end end

 

转载于:https://www.cnblogs.com/tiandsp/p/3946375.html

你可能感兴趣的文章
《树莓派渗透测试实战》——2.7 设置SSH服务
查看>>
用 ThreadLocal 管理用户session
查看>>
C语言及程序设计进阶例程-28 动态规划法问题求解
查看>>
setprecision后是要四舍五入吗?
查看>>
shiro初步 shiro授权
查看>>
上云就是这么简单——阿里云10分钟快速入门
查看>>
韵达:首家物流云企业的大规模云上调度实践
查看>>
第三方支付系统-支付流程
查看>>
android 单元测试
查看>>
回文字符串的判断解题报告
查看>>
poj1657——Distance on Chessboard
查看>>
关于android调用拍照不返回的问题。
查看>>
为什么在Spring的配置里,最好不要配置xsd文件的版本号
查看>>
协议森林08 不放弃 (TCP协议与流通信)
查看>>
关于起网络名字的思考
查看>>
十七、AR数据库操作CRUD之read查询
查看>>
详解DNS之DNS原理篇
查看>>
华为wa系列ap使用psk加密的命令行配置心得
查看>>
项目收尾管理和知识产权管理及法律法规标准规范
查看>>
重新理解下微软AD域FSMO
查看>>