1 图像的几何变换
1.1 平移
matlab里实现很简单,无非就是考虑平移后把溢出的部分剪切掉还是放大整个图像的大小来容纳整个图像而已。。
在python中,以cv2的方法为例:
import cv2
import numpy as np
img = cv2.imread('image.jpg',0)
rows,cols = img.shape
M = np.float32([[1,0,20],[0,1,20]])
dst = cv2.warpAffine(img,M,(cols,rows))
M是一个2*3的矩阵,表示对图像的各种处理,而cv2.warpAffine
是综合的图像几何变换函数,功能随M的变换而改变。(有点像matlab中的imtransform
,这个本小节后面会说)
1.2 镜像(反转)
镜像分为水平镜像和垂直镜像,像素点对应对称轴对面的相应像素,值做一个交换。这里给出一个matlab子函数实现镜像操作:
function output_image = (imput_image, n)
%参数n 代表镜像方式,1为水平,2为垂直,3为水平垂直
I = imput_image;
[M, N, G] = size(I);
J = I ;
if (n == 1)
for i = 1:M
for j = 1:N
J(i, j, :) = I(M-i+1, j, :);
end
end
elseif (n == 2)
for i = 1:M
for j = 1:N
J(i, j, :) = I(i, N-j+1, :);
end
end
elseif (n == 3)
for i = 1:M
for j = 1:N
J(i, j, :) = I(M-i