我正在寻找一种算法(位图像素操作),可以从普通图片中模拟鱼眼镜头(桶形畸变)。目前我已经找到了涉及外部库(如OpenCV、OpenGL或jhlabs)的实现。由于我正在学习数字图像处理课程并且正在进行课程评估项目,我不确定使用任何外部库是否会让我获得好成绩。所以有没有人能给我这样的算法参考呢?
附注:我被要求在Java中实现它,但来自任何语言的示例都可以。
附注:我被要求在Java中实现它,但来自任何语言的示例都可以。
cv
开头的函数:$ grep -o "cv\\w*" barrel.cpp | sort | uniq
cv
cvCreateImage
cvGet2D
cvGetSize
cvLoadImage
cvNamedWindow
cvSaveImage
cvSet2D
cvShowImage
cvWaitKey
float getRadialX(float x,float y,float cx,float cy,float k){
x = (x*xscale+xshift);
y = (y*yscale+yshift);
float res = x+((x-cx)*k*((x-cx)*(x-cx)+(y-cy)*(y-cy)));
return res;
}
float getRadialY(float x,float y,float cx,float cy,float k){
x = (x*xscale+xshift);
y = (y*yscale+yshift);
float res = y+((y-cy)*k*((x-cx)*(x-cx)+(y-cy)*(y-cy)));
return res;
}
这仅仅是径向变换公式 -- 这是你需要理解的部分。正如你所看到的,其中没有OpenCV调用。
这应该是你想要的。
看一下着色器mFishEyeShader
和updateProgramParams()