一、原理
二、标定程序
三、畸变矫正(含opencv实现和自己实现)
四、不丢失原图像素点矫正
(有什么其他要补充的或者要提问,留言就行)
github工程:
有时候我们需要对图像进行矫正,但是不希望增加像素点。比如:原图是(256,64)的图像,希望矫正后得到的依然是256x64个像素点;如果用上一篇博客一样,不可避免的会导致有些像素点丢失了。
但是对于需要每个像素点的设备而言,这样的丢失像素点,会导致周边的像素丢失。
为什么点会丢失

看过上一篇博客应该明白,畸变矫正的过程就是求解上方右图的a~p对应左图哪个位置的值,正常畸变矫正的过程是通过假设一幅与原图大小一样的图,然后求解每个像素点格子对应原图的像素格;然后将原图的像素值给矫正后的图。但是这样就会导致,原图中一个点对应矫正后的多个点,如下图所示,1、4、13、16出现多次,2、3、14、15丢失。

不丢像素点的离散矫正图原理

现在我们直接求解,原图中每一个像素点,对应的位置。这样就可以保证原图中的每个像素点都有对应的点。(适用于原图的每个点都要利用上的情况)
建议和代码一起看,比较好理解
#include "opencv.hpp"
#include <iostream>
#include <fstream>
#include <iostream>
#include<io.h>
#include <string>
#include<vector>
#include <sstream>
#include<direct.h>
#include<cmath>
using namespace cv;
using namespace std;
double f(double r, double k1, double k2, double b)
{
return k2 * pow(r, 5) + k1 * pow(r, 3) + r - b;
}
//y'=5*k2*r^4+3*k1*r^2+1
double fg(

本文介绍了一种在图像畸变矫正过程中保持原图像素点不丢失的方法,特别适用于需要保留每个像素信息的场景。文章详细解释了为什么传统矫正方法会导致像素点丢失,并提出了一种基于求解原图每个像素点对应位置的离散矫正方案,确保原图的每个像素点都能在矫正后的图像中找到对应位置。
最低0.47元/天 解锁文章
1631

被折叠的 条评论
为什么被折叠?



