matlab图像如何用代码完成图像的分割、边缘检测和拼接的任务?

matlab图像如何用代码完成图像的分割、边缘检测和拼接的任务?,第1张

你可以试试下面的程序:\x0d\x0aI=imread('myphoto.jpg') % 假设要处理的图像是myphoto.jpg\x0d\x0aheights=size(I,1) % 图像的高\x0d\x0awidths=size(I,2) % 图像的宽\x0d\x0am=8% 假设纵向分成8幅图\x0d\x0an=10% 假设横向分成10幅图\x0d\x0a% 考虑到rows和cols不一定能被m和n整除,所以对行数和列数均分后要取整\x0d\x0arows=round(linspace(0,heights,m+1))% 各子图像的起始和终止行标\x0d\x0acols=round(linspace(0,widths,n+1))% 各子图像的起始和终止列标\x0d\x0ablocks=cell(m,n) % 用一个单元数组容纳各个子图像\x0d\x0afor k1=1:m\x0d\x0afor k2=1:n\x0d\x0ablocks{k1,k2}=I(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:)\x0d\x0asubimage=blocks{k1,k2}\x0d\x0a% 以下是对subimage进行边缘检测\x0d\x0a% 加入边缘检测的代码\x0d\x0a% 以上是对subimage进行边缘检测\x0d\x0ablocks{k1,k2}=subimage\x0d\x0aend\x0d\x0aend\x0d\x0aprocessed=I% processed为处理后的图像,用原图像对其初始化\x0d\x0a% 以下为拼接图像\x0d\x0afor k1=1:m\x0d\x0afor k2=1:n\x0d\x0aprocessed(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:)=blocks{k1,k2}\x0d\x0aend\x0d\x0aend\x0d\x0afigure,imshow(processed)\x0d\x0a% 以上的程序已测试过,对灰度图像和真彩图像都可以运行。

1、首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10,15],[23,38],,[38,58]。方法如下:

x1=10+5*rand(500,1)

x2=23+15*rand(500,1)

x3=38+20*rand(500,1)

2、下面,我们要分别画出x1,x2,x3对应的曲线,用MATLAB的内置函数plot进行 *** 作,分别用三个plot进行绘图,结果如下:

plot(x1,'r')

plot(x2,'b')

plot(x3,'g')

3、可以看到,图中只有一条曲线,并没有其他两条曲线。这是因为后面plot的语句画的图会将前面plot画的图覆盖掉。因此我们需要用一个语句来保留前面所绘制的图,在需要保留的图的后面加一句holdon,即可将该图保留,使它不被后面的图所覆盖,具体语法如下:

plot(x1,'r')

holdon

plot(x2,'b')

holdon

plot(x3,'g')

4、这样就可以将三条曲线画在一张图上,为了区别,要分别给这三条曲线定义不同的颜色。

5、为了图的美观,我们可以用gridon添加网格线,还需要添加横纵坐标轴标题。方法如下:

xlabel('样本序列')

ylabel('值')

6、除此之外,因为我们画的是多条曲线,因此还需要添加图例,语法如下:

legend('变量1','变量2','变量3')

括号里面按照画图的顺序分别写每条曲线代表的意义即可。

7、最后这样就完成了。

用matlab处理碎纸片拼接:

1、思路:

分别用n个变量储存n个碎纸片图像,然后用矩阵拼接的方式把碎纸片拼接。

2、具体代码:

clear all

close

I1=imread('008.bmp')

I2=imread('014.bmp')

I3=imread('012.bmp')

I4=imread('015.bmp')

I5=imread('003.bmp')

I6=imread('010.bmp')

I7=imread('002.bmp')

I8=imread('016.bmp')

I9=imread('001.bmp')

I10=imread('004.bmp')

I11=imread('005.bmp')

I12=imread('009.bmp')

I13=imread('013.bmp')

I14=imread('018.bmp')

I15=imread('011.bmp')

I16=imread('007.bmp')

I17=imread('017.bmp')

I18=imread('000.bmp')

I19=imread('006.bmp')

a=[I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15,I16,I17,I18,I19]

imshow(a)

figure

I1=imread('003.bmp')

I2=imread('006.bmp')

I3=imread('002.bmp')

I4=imread('007.bmp')

I5=imread('015.bmp')

I6=imread('018.bmp')

I7=imread('011.bmp')

I8=imread('000.bmp')

I9=imread('005.bmp')

I10=imread('001.bmp')

I11=imread('009.bmp')

I12=imread('013.bmp')

I13=imread('010.bmp')

I14=imread('008.bmp')

I15=imread('012.bmp')

I16=imread('014.bmp')

I17=imread('017.bmp')

I18=imread('016.bmp')

I19=imread('004.bmp')

b=[I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15,I16,I17,I18,I19]

imshow(b)

扩展资料:

matlab使用技巧:

1、在编写Matlab程序的时候,需要可以用 % 来注释掉代码,或者可以直接使用快捷键【Ctrl + R】来注释程序;

2、同时如果需要取消注释代码,可以选择直接去除%或者使用快捷键【Ctrl + T】来取消注释;

3、可以选择【Edit】,之后点击【Copy Figure】,新建Word文档,点击【粘贴】,之后就可以看到复制的图片了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7828545.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存