📄 basedlineindrictc100.m
字号:
function BasedLineINDrictC100() %校正c100图像(358,235,500)x0,y0,R
% rgb=imread('D:\0.bmp');
rgb = imread('D:\dzf\fisheye image\C100\testImage0337.bmp');
[ height, width, v ] = size(rgb);
[X0,Y0,R] = Yuan(rgb); %返回圆形区域的圆心坐标及半径
%%%%%%求得畸变平面中心在校正平面的对应中心%%%%%%%%%%
x0 = 360;
y0 = 240-100;
r = round( R);%500;
u0 = x0;
v0 = y0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Image = zeros ( height,width,v );
Image = uint8 ( Image );
%Image(v0, u0, 1:3)=rgb(y0,x0,1:3);
%figure,imshow(Image)
%取成像平面图像上任意一点p(x,y),x,y皆为整数
for y = 1 : height
Delta = floor( sqrt( r ^ 2 - ( y - y0 ) ^ 2 ) );
for x = x0 - Delta : x0 + Delta
rd = round( sqrt( ( y - y0 ) ^ 2 + ( x - x0 ) ^ 2) ); %畸变点p距原点的距离为r
% rd = 603;
% if rd >= r
% continue
% end
dx = x - x0;
dy = y - y0;
if dx == 0 %y轴上点不发生畸变
v = y;
u = x;
else
if dx < 0
phi_d = pi + atan( dy / dx ); %畸变点p的方位角
else
phi_d = 2 * pi + atan( dy / dx ); %畸变点p的方位角
end
phi_p = phi_d; %无畸变点p的方位角
m = sqrt(1-(rd/r)^2);
if m ~= 0
rp=round( rd / m);%无畸变点p距原点的距离为rp
else
rp = rd ;
end
x1 = round( rp * cos( phi_p ) ); %无畸变点在x轴上坐标
y1 = round( rp * sin( phi_p ) ); %无畸变点在y轴上坐标
u = u0 + x1;
v = v0 + y1;
end
if v > height || v < 1 || u > width || u < 1 %如果超出图像之外的信息舍去
continue
end
Image( v, u, :)=rgb( y, x,:);
end
end
%%%%%%插值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%CorrectionImage = imresize ( Image , [ 480 720 ] , 'bilinear' );
%figure ,imshow(CorrectionImage);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure, imshow ( Image) ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -