행렬의 곱셈을 이용하면 이미지를 대칭 이동 시킬 수 있다.
이를 PyTorch tensor를 이용해서 연습해보자.
컬러 이미지는 RGB 3채널이 더해져서 복잡해지므로 흑백 이미지로 연습해보자.
import torch
from matplotlib import pyplot as plt
# 3 x 3 monochrome image
A = torch.tensor([[255, 114, 140],
[39, 255, 46],
[61, 29, 255]])
# Show the image
plt.xticks([]), plt.yticks([])
plt.imshow(A, cmap='gray', vmin=0, vmax=255)
이미지를 좌우 반전 시키기 위해서는 단위 행렬의 반대각 행렬(antidiagonal matrix)을 곱해주면 된다.
reverse = torch.tensor([[0, 0, 1],
[0, 1, 0],
[1, 0, 0]])
LR_rev_A = A @ reverse
# show the image
plt.xticks([]), plt.yticks([])
plt.imshow(LR_rev_A, cmap='gray', vmin=0, vmax=255)
이미지를 상하 반전 시키기 위해서도 단위 행렬의 반대각 행렬을 곱해주면 된다.
다만 좌우 반전에서는 (이미지 행렬) (단위 행렬의 반대각 행렬) 순서였다면
상하 반전에서는 (단위 행렬의 반대각 행렬) (이미지 행렬) 의 순서로 곱해야 한다.
UD_rev_A = reverse @ A
# show the image
plt.xticks([]), plt.yticks([])
plt.imshow(UD_rev_A, cmap='gray', vmin=0, vmax=255)