www.pudn.com > jiaozheng.rar > 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) ;