【发布时间】:2021-04-19 15:38:30
【问题描述】:
我有一些小的(通常约为 60x60 或更少)BGR 图像,我正在使用 OpenCV 的 warpPolar 为其生成极坐标投影。大多数时候它工作正常,但偶尔我会得到一张图像(来自与工作正常的图像相同的相机源),其中有散布的伪影。三种不同的插值方法都会产生伪影。我确实发现增加极半径可以消除伪影,但有人能解释一下为什么会有所不同吗?
这是调用 warpPolar 的代码:
Mat m = imread( "image.png", IMREAD_COLOR);
Moments mom = moments( m);
int len = //... semi-major axis*2 for ellipse fit
warpPolar( m, polar, Size(), Point( mom.m10/mom.m00, mom.m01/mom.m00) , len, INTER_LINEAR);
这是一张可以正常工作的图片:
这是一张图像,分别使用 NEAREST、LINEAR 和 LANCZOS4,在向下约四分之一处产生彩虹状伪影,并在底部出现一条灰色带:
...然后半径更长...
【问题讨论】:
-
您是否正在显示或写入扭曲的图像?你能包括你用来显示它的代码吗?能发一下原图吗?
标签: c++ opencv polar-coordinates remap