This forum thread提到了作者称为“反射中心垫”的东西。基本上,这是一种变换,它采用图像的边缘并将其向外反射,从而在图像的边缘上产生镜像,作者对此进行了略微显示,但显着改善了模型性能。
作为参考,这是他们发布的演示此技术的图像:
我的问题是双重的:
numpy
和类似skimage
之类的代码来表达这种转换的简单方法是什么?答案 0 :(得分:3)
此转换是否具有规范名称? “反光中心 垫”听起来是非官方的。
“对称填充”是引用此转换的常用表达方式。
用代码表达这种转变的简单方法是什么
我认为最简单的方法是使用Numpy的pad
和mode='symmetric'
。
import numpy as np
from skimage import data
import matplotlib.pyplot as plt
img = data.astronaut()
padded = np.pad(img, pad_width=((100, 200), (100, 500), (0, 0)), mode='symmetric')
fig, (ax1, ax2) = plt.subplots(2, 1)
ax1.imshow(img)
ax2.imshow(padded)
fig.show()
答案 1 :(得分:1)
要回答您的第二个问题:
import Image
import numpy as np
from scipy.misc import face
# example input
f = face()[200:500:2, 400:800:2]
# example output size
outy, outx = 480, 640
iny, inx, *_ = f.shape
iny -= 1; inx -= 1
yoffs, xoffs = (outy - iny) // 2, (outx - inx) // 2
Y, X = np.ogrid[:outy, :outx]
# transformation logic is essentially contained in line below
out = f[np.abs((Y - yoffs + iny) % (2*iny) - iny), np.abs((X - xoffs + inx) % (2*inx) - inx)]
Image.fromarray(out).save('m.png')
结果: