
第2步:利用MATLAB软件中的im2bw函数对所有碎纸片图像进行二值化处理[2],即所有的碎纸片都用仅包含0或1的二维矩阵 表示,其中1表示白色,0表示黑色;
第3步:依次提取矩阵 的第1列与最后1列元素,分别标记为 与 ;
第4步:将 中元素全为1所对应的碎片挑选出来,作为拼接复原图像的左边第1条碎片,并标记为 ;
第5步:将 的最后1列元素分别与剩余碎纸片的第1列元素作点积运算并求和,其中和值最大者即为与 最为匹配的碎纸片[3],记作 ,并将其放在拼接复原图像的左边第2条;
第6步:依此类推,得到 , ,……, ,最后得到拼接复原图像 。
根据上述算法,利用MATLAB软件编程(程序见附录1)可得问题1中附件1与附件2的碎片拼接顺序结果如表1与表2所示;附件1与附件2的拼接复原图像见附录2与附录3所示。
matlab拼接27个图像碎片程序,你这是2013年大学生数学建模大赛B题,我觉得这个题要用图像的字符识别,通过字符的结构进行度量,
关键是拼接的算法,你要设计合适的算法才能真正做到
imname = dir('.\*.bmp')%读入文件夹下的全部图像
im_num = length(imname)% 文件夹中图像的个数
im_temp = imread(imname(1).name,'bmp')%读入第一幅图像
[height,width] = size(im_temp)%得到图像的尺寸
DB(:,:,a) = zeros(height,width,im_num,'uint8')
% 读入全部图像
for a = 1:length(imname)
DB(:,:,a) = imread(imname(a).name,'bmp')%读取图像数据
%在此处也可以加入图像二值化代码
DB(:,:,a) = im2bw(DB(:,:,a) )
end
批量读入图片
用cat函数连接;
每个纸条的边界
ima = DB(:,:,a)
im_left = ima(:,1)
im_right= ima(:,end)
灰度值就是0 255,你要二值化数也行用 im2bw
左边1*1900的图像就是 im(:,1)
请采纳我的答案!
我的代码是调试通过的
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)