文件影象傾斜角檢測及校正(一)(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);
相關推薦
文件影象傾斜角檢測及校正(一)(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:
親自體驗安裝使用AppleDoc(iOS編寫介面文件工具(網頁版))及 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樣式表styleSheet(qss)幫助文件的使用,及相關術語、概念
學習樣式表,最好的參考資料莫過於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