簡體   English   中英

如何使用opencv在沒有像素丟失的情況下對圖像進行去噪

[英]How to dedistort an image without pixel loss using opencv

眾所周知,我們可以使用alpha = 1的函數cv::getOptimalNewCameraMatrix()來獲取新的CameraMatrix。 然后我們使用函數cv::undistort()與新的CameraMatrix可以在dedistortion之后獲取圖像。 然而,我發現失真后的圖像與原始圖像一樣大,而失真后的圖像的某些部分被黑色覆蓋。 所以我的問題是:這是否意味着原始圖像像素丟失了? 並且有沒有辦法避免像素丟失或使用opencv獲取尺寸大於原始圖像的圖像?

cv::Mat NewKMatrixLeft = cv::getOptimalNewCameraMatrix(KMatrixLeft,DistMatrixLeft           ,cv::Size(image.cols,image.rows),1);

cv::undistort(image, show_image, KMatrixLeft, DistMatrixLeft,NewKMatrixLeft);

圖像和show_image的大小都是640 * 480,但是從我的觀點來看,失真后圖像的大小應該大於640 * 480,因為它的某些部分是沒有意義的。 謝謝!

為了糾正失真,你基本上必須扭轉導致初始失真的過程。 這意味着像素沿各個方向被拉伸和壓扁以校正失真。 在某些情況下,這會使像素遠離圖像邊緣。 在OpenCV中,這是通過插入黑色像素來處理的。 這種方法沒有錯。 然后,您可以選擇如何裁剪它以去除邊緣處的黑色像素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM