我正在嘗試以非常特定的方式水平拉伸影像。每個 x 主坐標應遵循相對于原始 x 坐標的切線路徑。我相信有兩種方法可以做到這一點:
- 反轉正切函式并正常映射
- 映射正切函式,然后逆映射
使用
方法2:嘗試影像

結果表明,嘗試(具有倒置圖的正常 tan 函式)在影像邊緣附近的拉伸比預期的要小。除了邊緣之外,影像上幾乎所有其他地方都是相同的。為了節省空間,我沒有發布原始圖片。
uj5u.com熱心網友回復:
我玩過這個invert_map程式。它似乎對振蕩有點敏感。
改用這個:
def invert_map(F):
(h, w) = F.shape[:2] # (h, w, 2), "xymap"
I = np.zeros_like(F)
I[:,:,1], I[:,:,0] = np.indices((h,w)) # identity map
P = np.copy(I)
for i in range(10):
correction = I - cv2.remap(F, P, None, interpolation=cv2.INTER_LINEAR)
P = correction * 0.5
return P
我只是將校正衰減了 0.5,這使得定點迭代更溫和,收斂也更快。
在我對您的棕褐色地圖的實驗中,我發現 5-10 次迭代已經足夠好,并且在進一步的迭代中沒有進一步的進展。
我探索的整個筆記本:https ://gist.github.com/crackwitz/67f76f8a9eff21476b080c06d20660d0
功能請求:https ://github.com/opencv/opencv/issues/22120
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492805.html
