回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想做一个仿射变换,然后使用最近邻插值,同时保持输入和输出图像的相同维数。例如,我使用缩放变换T=[[2,0,0],[0,2,0],[0,0,1]]。知道如何用最近邻填充黑色像素吗?我试着给他们邻居强度的最小值。例如,如果一个像素有邻居[55,22,44,11,22,55,23231],我给它最小强度的值:11。但结果并不明朗</p>
<pre><code>import numpy as np
from matplotlib import pyplot as plt
#Importing the original image and init the output image
img = plt.imread('/home/left/Desktop/computerVision/SET1/brain0030slice150_101x101.png',0)
outImg = np.zeros_like(img)
# Dimensions of the input image and output image (the same dimensions)
(width , height) = (img.shape[0], img.shape[1])
# Initialize the transformation matrix
T = np.array([[2,0,0], [0,2,0], [0,0,1]])
# Make an array with input image (x,y) coordinations and add [0 0 ... 1] row
coords = np.indices((width, height), 'uint8').reshape(2, -1)
coords = np.vstack((coords, np.zeros(coords.shape[1], 'uint8')))
output = T @ coords
# Arrays of x and y coordinations of the output image within the image dimensions
x_array, y_array = output[0] ,output[1]
indices = np.where((x_array >= 0) & (x_array < width) & (y_array >= 0) & (y_array < height))
# Final coordinations of the output image
fx, fy = x_array[indices], y_array[indices]
# Final output image after the affine transformation
outImg[fx, fy] = img[fx, fy]
</code></pre>
<p>输入图像为:</p>
<p><a href="https://i.stack.imgur.com/22Vav.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/22Vav.png" alt="enter image description here"/></a></p>
<p>缩放后的输出图像为:</p>
<p><img src="https://i.stack.imgur.com/2hChR.png" alt="enter image description here"/></p>