碎纸片的拼接模型怎么做呀,数学建模

碎纸片的拼接模型怎么做呀,数学建模,第1张

第1步:利用MATLAB软件[1]依次读取附件1(或附件2)中的所有碎纸片图像,其中图片标记为 ;

第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)

请采纳我的答案!

我的代码是调试通过的


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存