MATLAB双线性插值 出错解决方案
发布时间:2011-06-30 07:31:42 文章来源:www.iduyao.cn 采编人员:星星草
MATLAB双线性插值 出错
以下是程序及程序结果报错,高手看下哪里出错
clear
close all
I=imread('lena.bmp');
imshow(I);
title('原图像')
[m,n]=size(I);
ang= str2double(inputdlg('请输入旋转角度', 'INPUT scale factor', 1, {'10'}));
row=n*sin(ang*pi/180)+m*cos(ang*pi/180);
col=n*cos(ang*pi/180)+m*sin(ang*pi/180);
Out = uint8(zeros(floor(row),floor(col))); %创建输出图像矩阵
for x=1:row-1
for y=1:col-1
oldX=floor((x-row/2)*cos(ang*pi/180)-(y-col/2)*sin(ang*pi/180)+m/2);
oldY=floor((y-row/2)*cos(ang*pi/180)+(x-col/2)*sin(ang*pi/180)+n/2);
if (oldX/double(uint16(oldX)) == 1.0) & (oldY/double(uint16(oldY)) == 1.0)
Out(x,y) = I(oldX,oldY);%若oldX,oldY为整数,直接赋值
else
a = double(uint16(oldX));
b = double(uint16(oldY));
x11 = double(I(a,b)); % x11 赋值为 I(a,b)
x12 = double(I(a,b+1)); % x12 赋值为 I(a,b+1)
x21 = double(I(a+1,b)); % x21 赋值为 I(a+1,b)
x22 = double(I(a+1,b+1)); % x22 赋值为 I(a+1,b+1)
Out(x,y) = uint8( (b+1-oldY) * ((oldX-a)*x21 + (a+1-oldX)*x11) + (oldY-b) * ((oldX-a)*x22 +(a+1-oldX) * x12) ); % 用双线性插值计算公式计算
end
end
end
figure;
imshow(Out);
title('按中心点旋转')
结果Warning: Divide by zero.
> In Untitledxuanzhuan1 at 15
??? Attempted to access I(8,0); index must be a positive integer or logical.
Error in ==> Untitledxuanzhuan1 at 20
x11 = double(I(a,b)); % x11 赋值为 I(a,b)
------解决方案--------------------
看报错
14行计算oldY=0了,第15行做除法就除数为0的错
19行b=0,20行给x11赋值的时候下标I(a,b)时候出错了,matlab的下标是从1开始的
如果非要取整,要么floor要么ceil但是都得判断0或者超过宽度/高度的情况.程序才能健壮
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
erlang:创建表
mnesia:create_table(student, [{attributes,{name,number,sex}}]).
怎么老是提示:
{aborted,{bad_type,student,{...
-
100分求助,matlab一维矩阵变成二维矩阵,怎么感觉我写的代码这么绕呢
希望把Input矩阵(一维)变成3行4列的二维矩阵Output;我写了下面...
-
为什么没有易语言版块呢?
为什么没有易语言版块呢?
------解决方案--------------------
易语言,还不常用,交流也不比,所以无....
-
批处理的一个问题
想用批处理更改文件属性
@echo off
arrtib -R /S E:\home\*.*
exit
这样写是错误的吗?
为什么没起作用啊
--...
-
几个关于大型机的问题(新手求救啊~)
1、z/OS 和UNIX系统的相同点和相异点有哪些啊?主目录和用户目录的区别是什么啊?
2、用JCL创建一...
-
急求!如何用正则截取一对标签中的字符当中的日期
<p class="source">
<!--[if !IE]>收藏功能<!...
-
批处理代码放在U盘里,如何复制整个硬盘的时间段文件? qivsran老师的答案,谢谢!
@echo off
md 新文件
setlocal enabledelayedexpa...
-
复制文件不带目录文件夹如何修改代码?同名文件仅复制最新的
@echo off
md %computername%资料 2>nul
Cd /d %computername%资料
F...
-
求C里面 全角半角转换函数
求C里面 全角半角转换函数
------解决方案--------------------
我在别处看了,希望对你有帮助。
...
-
求助:关于qtp10 无法识别 maven自动构建flex3.6 的问题
近日遇到maven自动构建flex3.6的问题。希望大家提出宝贵意见。
问...