文檔圖像傾斜角檢測及校正(一)(Matlab)

文檔圖像傾斜角檢測及校正(一)

  • 霍夫變換原理
  • Matlab程序

閱讀之前注意:

Hi,你好,我是Cooper Liu,歡迎來到我寫的“文檔圖像校正”系列博客。基於三種原理,我寫了四個實驗性的Matlab驗證程序,以及兩個文檔校正Matlab程序。在這裏你將能夠獲取所有的源代碼以及測試圖片,完全可以在你自己的Matlab上跑這些程序。

如果你是學生,請注意不要抄襲,課程設計作業的話,這種程序僅僅只能讓你得到80%左右的成績。
如果你是工作人士或者只是感興趣的極客,Okay,我想這些程序對於理解原理是如何應用爲程序的已經足夠 。

最後,請勿將這些資源用於商業用途(如你所見,這些程序都非常的初級)或者是謀取個人利益,知識在傳播的過程中能展現更大的價值^-^

本文閱讀建議用時:32min
本文閱讀結構如下表:

項目 下屬項目 測試用例數量
霍夫變換原理 0
Matlab程序 1

霍夫變換原理

所謂霍夫變換,即對於圖像平面上的一個點(x , y ),我們採用參數方程p=x*cos(θ)+y*sin(θ)把這個點映射到參數p-theta平面,那麼圖像平面上的一個點就對應p-theta平面的一條曲線,其中的p表示圖像平面中的這個點所在直線到原點的距離,theta表示這個點所在直線與X軸的夾角。

又因爲圖像平面上的一個點對應一系列穿過這個點的直線,即有一系列對應的p和theta,所以一個點在參數p-theta平面對應着一條正弦曲線。由此我們可以推導,如果是圖像平面上的一條直線,那麼直線上的每個點在參數p-theta平面對應的曲線都會相交於同一點,即當前直線的(theta, p)。

基於霍夫變換原理,我們可以在p-theta平面找到最多曲線相交的那點,這一點對應着圖像平面最長的直線(可以是連續的也可以是不連續的)。這個點的theta座標即是我們要尋找的傾斜角。1

Matlab程序

基於以上原理,我編寫了Matlab程序來進行實驗,源代碼可以參考angleDetection1.m文件。測試圖片爲line5.bmp。2
測試圖片可以從這裏獲取,鏈接:https://pan.baidu.com/s/1dGmmGjn 密碼:okt3

以下是實驗結果:
實驗結果
時間

如果您不想打開新的頁面查看matlab源代碼,也可以直接參考以下代碼:

%%本版基於霍夫變換原理
%%2018.01.16 by Cooper Liu
%%Questions? Contact me: [email protected]
clear;clc; %清空之前的變量
I=imread('line5.bmp'); %讀取圖像
level=graythresh(I); %使用最大類間方差法找到圖片的一個合適的閾值
bw=im2bw(I,level); %根據閾值,使用im2bw函數將灰度圖像轉換爲二值圖像時
figure(1);imshow(bw);
[m,n]=size(bw); %獲取尺寸
pMax=round(sqrt(m^2+n^2)); %計算最大p
thetaMax=180; %設定最大角度
countMatrix=zeros(pMax,thetaMax); %關於p和角度的計數矩陣
tic;
for i=1:m
    for j=1:n
        if bw(i,j)==0
            for theta=1:thetaMax %對theta作循環
                p=floor( abs( i*cos(3.14*theta/180) + j*sin(3.14*theta/180) ) ); %在theta循環過程中計算圖像矩陣中一個像素點對應的p值
                countMatrix(p+1,theta)=countMatrix(p+1,theta)+1; %像素點對應的計數矩陣中(p+1,theta)處計數
            end
        end
    end
end
[m,n]=size(countMatrix);
for i=1:m
    for j=1:n
        if countMatrix(i,j)>countMatrix(1,1)
            countMatrix(1,1)=countMatrix(i,j); %獲取最多曲線的相交點
            angle=j; %獲取相交點處對應的角度
        end
    end
end
toc;
angle %這裏得到的角度是 原點到直線的垂線 與X軸的夾角
if angle<=90
    rot=-angle;
else
    rot=180-angle;
end
pic=imrotate(I,rot,'crop'); %旋轉圖像
figure(2);imshow(pic);


  1. 參考文獻:[1] 荊雷,張欣,郭金鑫.基於版面的拍照文檔圖像傾斜校正.激光與紅外[J].2010,第10期
  2. 同時感謝願意在網絡上分享自己想法的各位博主。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章