【发布时间】:2019-08-05 13:05:45
【问题描述】:
我有一个来自 180 度鱼眼摄像头的视频流。我想做一些图像处理以将鱼眼视图转换为普通视图。
经过一些研究和大量阅读文章,我找到了this paper。
他们描述了解决这个问题的算法(和一些公式)。
我曾经尝试在 Matlab 中实现此方法。不幸的是,它不起作用,我没能使它起作用。 “校正”图像看起来与原始照片完全一样,并且没有任何失真消除,其次我只收到图像的左上角,而不是完整的图像,但是将“K”的值更改为 1.9 给出了整个图像的 mw ,但它的图像完全相同。
输入图片:
结果:
When the value of K is 1.15 as mentioned in the article
这是我的代码:
image = imread('image2.png');
[Cx, Cy, channel] = size(image);
k = 1.5;
f = (Cx * Cy)/3;
opw = fix(f * tan(asin(sin(atan((Cx/2)/f)) * k)));
oph = fix(f * tan(asin(sin(atan((Cy/2)/f)) * k)));
image_new = zeros(opw, oph,channel);
for i = 1: opw
for j = 1: oph
[theta,rho] = cart2pol(i,j);
R = f * tan(asin(sin(atan(rho/f)) * k));
r = f * tan(asin(sin(atan(R/f))/k));
X = ceil(r * cos(theta));
Y = ceil(r * sin(theta));
for k = 1: 3
image_new(i,j,k) = image(X,Y,k);
end
end
end
image_new = uint8(image_new);
warning('off', 'Images:initSize:adjustingMag');
imshow(image_new);
【问题讨论】:
标签: matlab image-processing fisheye