资源简介
在matlab中实现透视变换。算法正确高效,这种仿射变换经过修改后可用于图像矫正或者摄像机标定等用途。
代码片段和文件信息
close all;
clc;
H=1; %索引pix中第一个元素,即高度
W=2; %索引pix中第二个元素,即宽度
left_right=0.3; %抬起左边或右边时值为0-1之间,不抬起时为0
up_down=0; %抬起上边或下边时值为0-1之间,不抬起时为0
img=imread(‘lena.jpg‘); %这里v为原图像的高度,u为原图像的宽度
imshow(img); %这里y为变换后图像的高度,x为变换后图像的宽度
%img=flipud(img); %注释掉为抬起下边,没注释掉为抬起上边
%img=fliplr(img); %注释掉为抬起右边,没注释掉为抬起左边
[v u]=size(img);
a=1;b=up_down;c=0;
d=left_right;e=1;f=0;
g=up_down/v;h=left_right/u;i=1;
rot=[a b c;d e f;g h i];
pix1=[1 1 1]*rot./(g+h+i); %变换后图像左上点的坐标
pix2=[1 u 1]*rot./(g*v+h+i); %变换后图像右上点的坐标
pix3=[v 1 1]*rot./(g+h*u+i); %变换后图像左下点的坐标
pix4=[v u 1]*rot./(g*v+h*u+i); %变换后图像右下点的坐标
height=round(max([
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10555 2013-03-18 21:32 toushibianhuan\lena.jpg
文件 3872 2013-03-20 09:14 toushibianhuan\toushibianhuan.m
目录 0 2013-03-20 09:13 toushibianhuan
----------- --------- ---------- ----- ----
14427 3
评论
共有 条评论