資源簡介
該程序用最小二乘法實(shí)現(xiàn)傾斜校正,校正效果好,程序簡單易懂
代碼片段和文件信息
%利用最小二乘法進(jìn)行圖像傾斜校正
clear?all
I=imread(‘F:\MyMATLAB\qxjz\qingxie.jpg‘);
imview(I);
A=0;?????????%最小二乘法求解中的第1項(xiàng)
B=0;?????????%最小二乘法求解中的第2項(xiàng)
C=0;?????????%最小二乘法求解中的第3項(xiàng)
D=0;?????????%最小二乘法求解中分母的第1項(xiàng)
N=0;?????????%計(jì)算圖像中為1的個(gè)數(shù)
I1=im2bw(I0.3);?%對輸入圖像進(jìn)行二值化處理
[mn]=size(I1);
II=ones(mn);
II=-1*I1+II;?????%反色處理
[mn]=find(II);
rowmin=min(m);
rowmax=max(m);
colummin=min(n);
colummax=max(n);
I2=II(rowmin:rowmaxcolummin:colummax);?%顯示文字部分
[mn]=size(I2);
for?i=1:m
????for?j=1:n
????????A=A+I2(ij)*i*j;
????????B=B+I2(ij)*i;
????????C=C+I2(ij)*j;
????????D=D+I2(ij)*j*j;
????????N=I2(ij)+N;?????%計(jì)算最小二乘法中的各項(xiàng)
????end
?end
U=N*A-C*B;
V=N*D-C*C;
a=U/V;???????????????????%計(jì)算嚙合直線的斜率
rotate=atan(a);
rotate=rotate*180/3.142;
J=imrotate(I2rotate);??%對圖像進(jìn)行旋轉(zhuǎn)
figureimshow(J);???????%顯示經(jīng)過校正的圖像
評論
共有 條評論