资源简介
用于梯形畸变矫正算法,matlab测试通过,自带测试图片
代码片段和文件信息
function J=inverse(I)
% 郭磊,基于定向二维插值的逆投影变换方法
% R=50A=B=36;h1=10w1=6;h=1.5
I=imread(‘road0.bmp‘);
I=double(I);
[HW]=size(I); %像平面的高和宽;
A=36*pi/180; %2a代表摄像机镜头的垂直视野角;47
B=36*pi/180; %2b代表摄像机镜头的水平视野角;32
R=50*pi/180; %R代表摄像机的俯仰角;
k=0.7; %比例因子;
h=1.5; %摄像机安装的高度;
H1=400;W1=800; %实际路面图像的高和宽
h1=10;w1=7; %实际路面的高和宽
%由世界坐标系变换到图像坐标系
for M=1:H1 %变换后路面图像的H1*W1=240*600个象素点路面宽5米,长10米。5*120;10*24
for N=1:W1
Px=N*w1/W1-w1/2; Py=-M*h1/H1+h1/2+h*cot(R); %将(M,N)转换为路面实际坐标(Px,Py),只有在涉及到
%路面坐标系得时候才会有把道路坐标系下的图像放缩的问题,
%乘以一定的象素值
Py1=(Py*H-H*h*tan(R))/(2*Py*tan(R)*tan(A)+2*h*tan(A)); % 垂直方向
Px1=(Px*W)/(sqrt(h*h+Py*Py)*2*tan(B)); % 水平方向
m=H/2-Py1; n=Px1+W/2; %论文中的坐标系变换已经规定了坐标,所以此时直接按人家得坐标进行转换即可
i=floor(m); j=floor(n); % 不超过m的最大整数
a=m-i; b=n-j; % 小数部分
if ((i>=(2/3)*H)&&(i1)&&(j<((1/2)*W)))
Imn=((1-a)*(1-b)*I(ij)+a*(1-b)*I(i+1j)+b*(1-a)*I(ij+1)+a*b*I(i+1j+1))*k+((1/3)*I(i+1j-1)+(1/3)*I(i+2j-1)+(1/3)*I(i+2j))*(1-k);
end
if ((i>1)&&(i<((2/3)*H)))&&((j>1)&&(j<((1/2)*W)))
Imn=(a*I(i+1j)+(1-a)*I(ij+1)+b*I(ij+1)+(1-b)*I(i+1j))/2;
end
if ((i>=(2/3)*H)&&(i=((1/2)*W))&&(j Imn=((1-a)*(1-b)*I(ij)+a*(1-b)*I(i+1j)+b*(1-a)*I(ij+1)+a*b*I(i+1j+1))*k+((1/3)*I(i+1j+2)+(1/3)*I(i+2j+1)+(1/3)*I(i+2j+2))*(1-k);
end
if ((i>1)&&(i<((2/3)*H)))&&((j>=((1/2)*W))&&(j %Imn=(a*I(i+1j+1)+(1-a)*I(ij)+b*I(ij)+(1-b)*I(i+1j+1))/2;
Imn=(a*I(i+1j+1)+(1-a)*I(ij)+b*I(i+1j+1)+(1-b)*I(ij))/2;
end
J(MN)=uint8(Imn);
end
end
%J=mat2gray(J1);
figureimshow(J);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-04-28 19:13 逆透视变换\
文件 2155 2015-04-28 19:15 逆透视变换\inverse1.m
文件 183094 2007-01-31 09:54 逆透视变换\road0.bmp
- 上一篇:循环平稳信号处理
- 下一篇:dspbuilder FFT模块
评论
共有 条评论