目录
图像的平移
function OutImage = ImageShiftFun(InputImage,deltaX,deltaY,method)
%================================================================
% 功能:图像的x轴和y轴平移
% 参数:InputImage为输入单通道图像,deltaX为x轴平移量,deltaY为y轴平移量。
%method=1时采取向前映射,method=2时采取向后映射
% 返回值:OutImage为InputImage同维数组
% 主要思路:利用平移矩阵
% 备注:如果图像为多通道则需要重复调用
% 如果平移量为小数则采用邻域插值
% 调用方法:OutImage = ImageShiftFun(InputImage,deltaX,deltaY)
% 日期:2019.11.26
% 作者:Leetion
[iLimit,jLimit] = size(InputImage);
switch method
case 1
OutImage = zeros(iLimit, jLimit);
ShiftArray = [1 0 deltaX; 0 1 deltaY; 0 0 1];
for yIndex = 1:iLimit
for xIndex = 1:jLimit
InIndex= [xIndex;yIndex;1];
OutIndex = ShiftArray*InIndex;
xOutIndex = round(OutIndex(1,1));
yOutIndex = round(OutIndex(2,1));
if (yOutIndex<=iLimit)&(xOutIndex <= jLimit)&(yOutIndex >= 1)&(xOutIndex >= 1)
OutImage(yOutIndex,xOutIndex) = InputImage(yIndex,xIndex);
end
end
end
case 2
OutImage = zeros(iLimit, jLimit);
ShiftArray = [1 0 -deltaX; 0 1 -deltaY; 0 0 1];
for yIndex = 1:iLimit
for xIndex = 1:jLimit
OutIndex = [xIndex;yIndex;1];
InIndex = ShiftArray*OutIndex; %矩阵乘法
xInIndex = round(InIndex(1,1));
yInIndex = round(InIndex(2,1));
if (yInIndex<=iLimit)&(xInIndex<=jLimit)&(yInIndex>=1)&(InIndex>=1)
OutImage(yIndex,xIndex) = InputImage(yInIndex,xInIndex);
end
end
end
otherwise
warning("method只能取1或2");
end
end
图像的旋转
function OutImage = ImageRotateFun(Inp

本文详细介绍图像的平移、旋转、切变及镜像等几何变换方法,包括算法原理、实现步骤及测试结果。通过矩阵表示法,展示了不同映射方式对变换效果的影响。
1万+

被折叠的 条评论
为什么被折叠?



