完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在做图像处理的大作业,写的双线性插值放大的函数运行速度很慢(100*100的放大两倍大概就得10秒左右吧),变换矩阵的地方修改了一点还是耗时不少。附件里是 .m文件,哪位大神写过这方面的程序求看一下,万分感谢!!!
附代码: function fangda_bilinear(im_before,size_N) %函数,输入原始图像和放大倍数[m,n],分别为高度和宽度放大。 N=size(im_before); %原始图像的大小 im_after=zeros(size_N(1)*N(1),size_N(2)*N(2)); %放大后矩阵的大小 trans_matrix=[size_N(1) 0 0;0 size_N(2) 0;0 0 1]; %变换矩阵,插值用 for k=1:1:3 for i=1:1:size_N(1)*N(1) for j=1:1:size_N(2)*N(2) zb_cz=[i j 1]/trans_matrix; %插值位置的坐标(在原始图像上插值,有小数) if zb_cz(1)<1 zb_cz(1)=1; %上界 end if zb_cz(2)<1 %左界 zb_cz(2)=1; end zb_cz_upleft=[floor(zb_cz(1)) floor(zb_cz(2))]; %左上 zb_cz_upright=[floor(zb_cz(1)) ceil(zb_cz(2))]; %右上 zb_cz_downleft=[ceil(zb_cz(1)) floor(zb_cz(2))]; %左下 zb_cz_downright=[ceil(zb_cz(1)) ceil(zb_cz(2))]; %右下 %以上找到离最近的四个点坐标 x=zb_cz(2)-floor(zb_cz(2)); y=zb_cz(1)-floor(zb_cz(1)); %归一化坐标,简化计算方法参考ppt25页 im_after(i,j,k)=(im_before(zb_cz_upright(1),zb_cz_upright(2),k)-im_before(zb_cz_upleft(1),zb_cz_upleft(2),k))*x... +(im_before(zb_cz_downleft(1),zb_cz_downleft(2),k)-im_before(zb_cz_upleft(1),zb_cz_upleft(2),k))*y... +(im_before(zb_cz_downright(1),zb_cz_downright(2),k)+im_before(zb_cz_upleft(1),zb_cz_upleft(2),k)... -im_before(zb_cz_downleft(1),zb_cz_downleft(2),k)-im_before(zb_cz_upright(1),zb_cz_upright(2),k))*x*y... +im_before(zb_cz_upleft(1),zb_cz_upleft(2),k); end end end imshow(uint8(im_after)); end
|
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1415 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1713 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2524 浏览 0 评论
2863 浏览 0 评论
4089 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-18 17:23 , Processed in 0.495686 second(s), Total 72, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号