你可以试试下面的程序:\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% 以上的程序已测试过,对灰度图像和真彩图像都可以运行。其实很简单的,看懂下面的语句:
PicName1='a.jpg'% 要合并的图片1
PicName2='b.jpg'% 要合并的图片2
PicOut='c.jpg'%合并的结果
IV1=imread(PicName1)% 读入图片1
IV2=imread(PicName2)% 读入图片2
PicData=[IV1IV2]% 如果是纵向拼接用这个
PicData=[IV1 IV2]% 如果是横向拼接用这个
imwrite(PicData, PicOut, 'Quality', 75)% 输出图形
打字不易,如满意,望采纳。
假设彩色图像I1的高宽分别是col1,row1,彩色图像I2的高宽分别是col2,row2,
如果两幅图像左右拼接,col = max(col1,col2),row = row1+row2
I3 = zeros(col,row)
I3(1:col1,1:row1,:) = I1
I3(1:col2,row1+1:row1+row2,:) = I2
如果两幅图像上下拼接,col = col1 + col2,row = max(row1,row2)
I3 = zeros(col,row)
I3(1:col1,1:row1,:) = I1
I3(col1+1:col1+col2,1:row2,:) = I2
评论列表(0条)