【发布时间】:2021-12-26 12:28:09
【问题描述】:
我想使用 OpenCV 的 cv2.warpAffine 函数从 CelebA 图像(1024x1024 大小)转换和对齐检测到的人脸(320x240 大小),但转换后图像的质量明显低于我尝试手动对齐时的质量Photoshop:(左图用Photoshop转换,右图用OpenCV转换)
我使用了 OpenCV 的所有插值技术,但没有一个在质量上接近 Photoshop。
我使用的代码是:
warped = cv2.warpAffine(image, TRANSFORM_MATRIX, (240, 320), flags=cv2.INTER_AREA)
是什么问题导致转换后的图像质量如此低?
如果需要,这里是原始 1024x1024 图像的Link。
【问题讨论】:
-
您需要在“抽取”之前过滤掉高频分量。它不会那样做,即使是 lanczos。之前应用适当的高斯模糊。
-
没有。 在抽取之后,损坏已经造成。你不能再解决这个问题了。东西已经从裂缝中掉了下来(采样网格)。你必须在抽取之前低通。
-
我刚刚检查过... 带有 INTER_AREA 的 cv.resize 给出了不错的结果...但是 warpAffine 不似乎支持 INTER_AREA。我看到以前人们在使用 warpAffine 和 INTER_AREA 时遇到问题的问题......可能是一个错误。它当然没有记录在案。
-
由于目前没有记录这个“假”INTER_AREA,我已经为它打开了一个问题。 github.com/opencv/opencv/issues/21060 如果您认为您想对文档中的某些更改提出拉取请求,请继续。
标签: python c++ image opencv image-processing