完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
下面是我从网上搜到的 关于图片拼接的程序但是运行后发现不能删除重叠部分,各位大哥能给我解释一下这源代码是什么意思么?有点急啊!
A= imread('a.jpg'); subplot( 1, 2, 1),imshow ( A) title('源图像A') B= imread('b.jpg'); subplot( 1, 2, 2) , imshow ( B) title( '源图象B'); [ high, wid] = size( A) ; A1= double( A); B1= double( B); %在图A 取特征块 sub_A = A1 ( high/2-69: high/2, 3 * wid/ 4:3 *wid/4+69) ; sub_B1= B1( 11: 80, 11: 80) ; mod1= sub_A-sub_B1; mat1= sum( sum( mod1.* mod1) ) ; % 匹配模板对应像素差的平方和 mat_best= mat1; %在B 图中搜寻对应匹配 %第一步粗匹配 for x1= 1: 70: wid-70 for y1= 1: 70: high-70 sub_B= B1(y1:y1+ 69,x1:x1+ 69) ; mod=sub_A-sub_B; mat = sum(sum( mod*mod) ) ; % 匹配模板对应像素差的平方和 if mat<= mat_best mat_best=mat; xx= x1; yy= y1; end end end x= 1.2; y= 1.2; %第二步细匹配 for x2= xx-80:xx+80 for y2= yy-80:yy+80 sub_B2= B1(y1: y1+ 69, x1: x1+ 69) ; mod2= sub_A-sub_B2; mat2=sum(sum(mod2.* mod2)) ; if mat2<=mat_best mat_best=mat2; x=x2; y=y2; end end end %拼接 if y==0 AA=A(1: high-1,1: 3* wid/4) ; BB=B(1: high-1,1: wid-1) ; else if y>= high/2 AA= A(1:high-y, 1: 3* wid/4) ; BB= B(y:high-1, x : wid-1) ; else AA=A(y:high-1,1: 3* wid/4) ; BB=B(1:high-y, x:wid-1) ; else ify> = high/2 AA= A( 1:high-y,1:3* w id/ 4) ; BB= B( y:high-1,x: wid-1) ; else AA=A(y:high-1,1:3* wid/ 4) ; BB=B(1:high-y,x:wid-1) ; end end C= [ AA BB] ; figure, imshow ( C) title('直接拼接的图像') %融合 if y==0 A2= A( 1: high-1, : ) ; B2= B( 1: high, : ) ; else if y> = 50 A2= A( 1:high-y , : ) ; B2= B( y:high-1, : ) ; else A2= A( y:high-1, : ) ; B2= B( 1:high-y, : ) ; end end [ high2, wid2] = size( A2) ; %基于像素平均值 a2= A2( 1: high2, wid-x+ 1: wid) ; b2= B2( 1: high2, 1: x ) ; c2= imadd(a2, b2) ; cc= imdivide(c2,2) ; aa= A2( 1: high2, 1: wid-x ) ; bb= B2( 1: high2, x : wid) ; D1= [ aa cc bb] ; figure, imshow ( D1) title( '基于重叠象素平均的融合') ; %基于渐变因子 a1= A2( 1: high2, wid-x+ 1: wid) ; b1= B2( 1: hig h2, 1: x ) ; a= double( a1) ; b= double( b1) ; d1O= linspace( 1, 0, x ) ; d= 1: x ; %列数, 即渐变矩阵有X 行 d1= d1O'; % 列向量, X 个 [ X1, y1] = meshgrid( d1, d) ; im1= a* X1; d20= linspace( 0, 1, x ) ; % 行向量, X 个 d2= d20'; [ X2, y2] = meshgrid( d2, d) ; im2= b* X2; im11= uint8( im1) ; im22= uint8( im2) ; im3= imadd( im11, im22) ; figure, imshow ( im3) title( '融合区') a_b= imadd( im11, im22) ; aa= A2( 1: high2, 1: wid?x ) ; bb= B2( 1: high2, x : w id) ; D2= [ aa a_b bb] ; figure, imshow ( D2) title( '拼接图像') ; |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-23 16:28 , Processed in 0.493962 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191