1. 程式人生 > >文件影象傾斜角檢測及校正(一)(Matlab)

文件影象傾斜角檢測及校正(一)(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原始碼,也可以直接參考以下程式碼:

%%本版基於霍夫變換原理
%%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. 同時感謝願意在網路上分享自己想法的各位博主。

相關推薦

影象傾斜角檢測校正Matlab

文件影象傾斜角檢測及校正(一) 霍夫變換原理 Matlab程式 閱讀之前注意: Hi,你好,我是Cooper Liu,歡迎來到我寫的“文件影象校正”系列部落格。基於三種原理,我寫了四個實驗性的Matlab驗證程式,以及兩個文件校正Matl

08-Linux基礎入門-和目錄的屬性權限之類型、擴展名權限基礎

ins tmp first 串口 .py 都是 公眾平臺 cond .com 一、Linux中的文件類型在Linux系統中,可以說一切(包括目錄、普通文件、設備文件等)皆為文件。文件類型包含有普通文件、目錄、字符設備文件、設備文件、符號鏈接文件、管道文件等等,當執行ls

WebLogic 任意上傳 遠程代碼執行漏洞 CVE-2018-2894------->>>任意上傳檢測POC

htm input ade print out vcg exc ops 上傳 前言: Oracle官方發布了7月份的關鍵補丁更新CPU(Critical Patch Update),其中針對可造成遠程代碼執行的高危漏洞 CVE-2018-2894 進行修復: http:

親自體驗安裝使用AppleDociOS編寫介面工具(網頁版)) appledoc/Model/GBMethodData.m:44報錯處理

親自體驗安裝使用AppleDoc(iOS編寫介面文件工具(網頁版)) 詳細教程參見的另外一個部落格: http://www.jianshu.com/p/ef5e2bae6894 補充:當你cd 把工程拖入終端後,執行上面的命令後,出現: **

opencv影象特徵檢測匹配harris,sift,surf,fast,breif,orb,BFmatch,FlannBasedMatcher

本文簡單概括各種演算法的提出背景及opencv實現,對具體原理不做討論一般而言,一個物體的角點最能夠代表物體的特徵,所以所謂的特徵檢測又叫角點(Corner)檢測harris是最早提出的特徵提取演算法:opencv實現如下:dst=cv2.cornerHarris(gray,

QT樣式表styleSheetqss幫助的使用,相關術語、概念

學習樣式表,最好的參考資料莫過於QT自帶的幫助文件,隨便開啟一個QT工程,點選->幫助->索引->styleSheet,即可開啟QT所有關於樣式表的幫助資訊,如下圖所示: 比如,我們想查查下拉列表控制元件QComboBox支援哪些樣式屬性,可以點選上圖

xshell本地上傳到Ubuntu上從Ubuntu上下載文到本地

file 選擇 roo root 窗口 服務 http 安裝 我只 1.第一種方法是最常用的 :如果下載了Xshell和Xftp,Ctrl+Alt+F就可以選擇文件的互傳了!(虛擬機/雲服務器通用)--只要相互間能ping得通。 2.第二種方法 :ubuntu環境

歸檔、壓縮傳輸

文件歸檔、壓縮及傳輸1.文件歸檔文件歸檔,就是把多個文件變成一個歸檔文件tar c 創建 f 指定歸檔文件名稱 t 顯示歸檔文件中的內容 r

學習筆記:Linux 和目錄屬性權限

學習筆記:linux 文件和目錄屬性及權限1 . Linux 中的文件1.1 文件屬性概述 在linux裡面一切皆文件!! Linux 系統中的文件或目錄的屬性主要包括:索引節點(inode)、文件類型、權限屬性、鏈接數、所歸屬的用戶和用戶組、最近修改時間等內容: 下面我們看一下執行ls- lhi的結果:[[

servlet上傳2——復合表單提交數據獲取和文上傳

import bmi util 3.2 utf false ons quest pat 上傳文件時表單enctype屬性必須要更改為<enctype=‘multipart/form-data‘>;采用post提交表單,元素需要有name屬性; 利用第三方jar包

linux 夾權限umask

ble 強制寫 linu lba 並不是 -- -1 是個 總結 先創建一個目錄,看看權限: $ ll 總用量 20 drwxrwxr-x 3 huangxm huangxm 4096 2月 16 16:35 ./ drwxr-xr-x 128 huangxm h

TypeScript 申明的發布使用

script type 使用 一 ,發布文件:①, 首先需要在npm官網註冊一個賬號:https://www.npmjs.org②, 使用npm adduser命令添加一個賬號註意:需要輸入3個信息1 , 你的用戶名( 如 : 我的是aonaufly )2 , 你的密碼 ( 註意 , 密碼是掩藏的

CSV導入Mysql出現的亂碼等問題 轉載

一行 varchar data 找到 fma 命令 數據 格式 oca 將*.csv文件導入mysql可使用LOAD DATA INFILE, 概要寫法: Load data in file 具體語法使用可參照:http://dev.mysql.com/doc/ref

linux 將一個服務器上的夾拷貝到另一個服務器上轉載

轉載 oca href 計算機名稱 http 目錄命令 遠程服務器 target blog 復制文件或目錄命令: 復制文件: (1)將本地文件拷貝到遠程 scp 文件名用戶名@計算機IP或者計算機名稱:遠程路徑 本地192.168.1.8客戶端 scp /r

Linux下各夾的含義解釋

linux目錄解釋大全初學Linux,為了更好的記憶以及搞清楚各文件的含義。1、bin binary(二進制)的縮寫; 含義:此文件下存放的都是二進制可以執行命令文件。2、sbin system binary是系統管理員專用的二進制代碼存放目錄,主要用於系統管理3

Linux:從中搜索關鍵字並顯示行數cat,grep函數

img div 格式 gre 搜索 運行 .cn src images 假如有test1.txt的格式如下圖所示: 有test2.txt的內容如下: 現需將test2.txt含有的關鍵字的行搜索出來並顯示行數 則可以用到命令: cat test1.txt

【daily】分割限速下載,合並分割

但我 redist lar for @override files fse exception 調度 說明   主要功能:     1) 分割文件, 生成下載任務;     2) 定時任務: 檢索需要下載的任務, 利用多線程下載並限制下載速度;     3) 定時任務: 檢

系統基礎ext系統創建管理詳解、系統的使用卸載、fstab格式自動掛載系統的

文件系統創建文件系統--分區格式化 格式化: 低級格式化: 劃分磁道 高級格式化: 創建文件系統,按照某種特定的標準,將整個分區劃分為大小相同的若幹小的邏輯編址單元,每個這樣的單元稱為塊(block)【windows中稱為簇】; 劃分塊的標準: 在Linux的文件系統中,主要的塊的劃分

Python管理、亂碼對passwd排序

() oss ora nco ges pool doc post game 1.讀寫文件讀文件: f = open("1.txt") text = f.readlines() print(text)寫文件: f = open(

第三周第一節、linux和windows互傳,用戶配置和密碼配置、用戶用戶組管理

2018-04-02Linux和Windows互傳文件 samba、ftp服務都可以實現Linux和Windows文件傳輸,平時我們使用的Xshell中也有一個命令可以實現Linux和Windows文件互傳:首先我們要安裝軟件包:[root@a3 ~]# yum -y install lrzsz從Window