學習數字圖像處理經驗談

一、面向應用:層層分解、抓住要點

我們學習數字圖像處理的最終目的還是應用,不管是用它來研制產品還是研發項目抑或是研究課題,都要用數字圖像處理的理論、方法和技術來解決實際問題。在此過程中,提高效率是非常重要的,因此,我們在實際應用過程中要面向需求,結合實際;將問題層層分解,理清解決思路;抓住其要害,集中力量進行突破,切忌眉毛胡子一把抓。

下面就結合筆者所研究過的一個課題進行詳細說明。

任務要求:一臺智能移動機器人上配備有單目可見光視覺傳感器,要求通過該視覺傳感器采集的視頻序列圖像,實現在復雜環境下實現對紋理清晰的特定目標的實時跟蹤。

注:該問題的解決應從硬件和軟件兩個方面進行考慮,對硬件的選擇、設計和搭建超出了本文所討論的內容,因此,本文僅從數字圖像處理方法的角度進行分析)

分析討論:

(1)任務分解:通過對任務要求進行分析可知,該任務的核心是“目標識別跟蹤”;在此基礎上有兩個約束條件:“復雜環境下”和“實時性”;方法實現的平臺是“移動機器人”。任務的核心——“目標識別跟蹤”是我們所需要解決的難點和重點;約束條件1“復雜環境下”則要求我們對所采集的圖像進行去噪預處理;約束條件2“實時性”也是需要解決的問題,這就要求我們盡可能地降低各種算法的運算復雜度;由于實現平臺“移動機器人”在行進過程中采集的視頻圖像存在抖動現象,因此,在對采集的圖像進行去噪后需要對其進行增穩處理。通過初步分解,我們就得到了任務中所要解決的問題以及大致流程(如圖1所示)。

??

圖1? 任務分解及流程

(2)難點分解:本任務的難點是“目標識別跟蹤”。之所以稱其為難點,是對目標的識別和跟蹤過程中,存在視覺傳感器與目標物體的相對運動,因而,目標在圖像中存在著尺度變化、旋轉變化、視角變化、照度變化以及局部遮擋,這給目標識別和跟蹤帶來了挑戰。我們常用的目標識別與跟蹤算法有:基于幀間差分的目標識別與跟蹤法、基于光流的目標識別與跟蹤法、基于模板匹配的目標識別與跟蹤法、基于顏色的目標識別與跟蹤法、基于特征點的目標識別與跟蹤法。考慮到每種方法的特點以及待跟蹤目標具有清晰的紋理,我們可以采用基于特征點的目標識別與跟蹤法,更進一步地說,我們應采用尺度不變特征點(SIFT)作為識別與跟蹤的特征,因為尺度不變特征點對尺度變化、旋轉變換、視角變化、照度變化和局部遮擋具有魯棒性。同時,我們希望目標識別和跟蹤算法具有良好的實時性,因而,可以考慮PCA-SIFT和SURF特征點作為目標特征。此外,由于視頻序列相鄰圖像之間存在相關性,目標在相鄰幀之間不會有劇烈的變換,因而,可采用隔幀搜索法對目標進行檢測并用Kalman濾波或粒子濾波對目標的軌跡進行預測。難點分解的過程如圖2所示。

?

圖2? 難點分解過程

(3)算法分解:經過任務分解和難點分解后,我們已經對任務的實現步驟和每個步驟所需的算法有了一個清晰的了解。在此之后,我們還需對每一個具體的算法進行分解,形成實現步驟,以便于后續的研究以及模塊化分工實現。

?

二、面向學習:追根溯源、比較總結

在數字圖像處理中,很多算法是一脈相承或有著密切聯系的,搞清楚這些來龍去脈以及相互聯系,有利于我們加強對算法的理解以及改進創新。

那么,如何把握這些聯系呢?我認為,首先得清楚每種算法的提出背景,也就是“這種算法為什么會被提出”或是“這種算法是針對什么問題而提出的”。就拿數字圖像變換中的內容為例,我們是從圖像的空間變換講起的,但是空間變換無法反映圖像的頻率分布信息,隨著傅里葉變換的誕生,這一問題得到了解決,傅里葉變換也被研究者譽為是“圖像處理的第二種語言”。正在人們為之歡心鼓舞之時,研究者有發現傅里葉變換也存在著不足,它在空域上無任何分辨,不能作局部分析。針對于此,D.Gabor 于1946年提出了加窗傅里葉變換,也就是著名的Gabor變換,它通過引入一個時間局部化“窗函數”改進了傅里葉變換的不足,但其窗口大小和形狀都是固定的,沒有從根本上彌補傅里葉變換的缺陷。小波變換的提出從根本上解決了這一難題,它有一個靈活可變的時間—頻率窗,能有效地從信號中提取信息,通過伸縮和平移等運算功能對函數或信號進行多尺度細化分析,“數學顯微鏡”的美譽也因此得來。如果我們能夠把這些聯系梳理清楚,那么,我們在學習小波變換時就會豁然開朗,游刃有余。難道小波變換就那么完美嗎?答案當然是否定的,當前有很多算法就如何提高小波變換的效能提出了改進。按照上述的“聯系”方式,就不難建立起完備的知識體系。

?

圖3? 圖像分析聯系示意圖

談過了“追根溯源”,我們再來聊聊“比較總結”。我們以圖像的邊緣檢測為例來進行說明。每一種方法都能實現邊緣檢測,但對于同一幅圖像,每一種邊緣檢測方法的效果又不盡相同。這是為什么呢?原來,每一種邊緣檢測的方法都有自己優點和不足,都有自己特定的應用背景。我們不妨對其進行列表比較(如表1所示)。

表1? 邊緣檢測算子比較

名? 稱

特??? 點

基于一階微分算子檢測邊緣

運算簡單,但對噪聲敏感

基于LOG算子檢測邊緣

邊緣保留較為完整、定位準確、抗干擾能力強

基于 Canny算子檢測邊緣

抗干擾能力強,邊緣連續性好

基于SUSAN算子檢測邊緣

抗噪聲能力好、運算量小,速度快

對各種邊緣檢測算子進行比較后,它們各自的特點便一目了然,在何種情況下運用哪種邊緣檢測算子效果最佳便做到了心中有數。

在比較完各種邊緣檢測算子的“個性”之后,我們不妨再來總結一下它們的“共性”。盡管邊緣檢測的方法林林總總,但各種方法的共同目的就是要檢測出圖像灰度變化劇烈的區域。從數學的角度來看,就是對數字圖像進行差分;從信號處理角度看,就是用高通濾波器來保留高頻信號。

學習的過程講究循序漸進,溫故知新,當然,對數字圖像處理技術的學習也不例外。但是,數字圖像處理技術又有自身的特點:理論深、角度廣、更新快,因此,良好的學習方法可以使數字圖像處理的學習事半功倍。在學習數字圖像處理技術時,讀者不妨嘗試著去追根溯源、比較總結,相信定會受益匪淺。

本文轉自:http://xiaozu.renren.com/xiaozu/252226/335693784

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247251.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247251.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247251.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

讀javascript百煉成仙笑死筆記一

“自然是這樣的,但是我現在這樣改一下,你說結果是多少呢?”葉小凡詭異地笑了笑,然后打出一段比較奇特的代碼。 var a 1; var b; var sum (b a --a) a-- b; “噗!”看到這段代碼,對面弟子差點一口老血…

C#調用存儲過程的通用類

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Data.SqlClient;usingSystem.Collections;usingSystem.Data;//摘要:數據訪問助手。//作者:ZhiQiao//日期:2008/07/02namespaceZhiQiao.DataAccessHelper{ //存…

圖靈獎得主(一)

本文轉自:http://bbs.gxnu.edu.cn/bbsanc.php?path%2Fgroups%2FGROUP_5%2FProgramming%2Fother%2FM.1029997222.A A.M. Turing Award ACMs most prestigious technical award is accompanied by a prize of $25,000. It is given to an individual selected fo…

react-router-dom@6獲取路由傳參

目錄 參數獲取 1、子路由形式攜帶 2、問號(?)形式參數 3、事件跳轉傳參 router/index.tsx import App from "App"; import Home from "pages/Home"; import List from "pages/List"; import Detail from "pages/Detail"; import…

圖靈獎得主(二)

本文轉自:http://bbs.gxnu.edu.cn/bbsanc.php?path%2Fgroups%2FGROUP_5%2FProgramming%2Fother%2FM.1029997222.A 1987年度的圖靈獎授予了IBM沃特森研究中心老資格的研究員 約翰科克(Johncocke)。 科克是從機械到數學、又從數學轉到 計算機方向上來的學者。…

jQuery效果之滑動

jQuery 滑動方法有三種:slideDown()、slideUp()、slideToggle()。 jQuery slideDown() 方法用于向下滑動元素, 語法:$(selector).slideDown(speed,callback); 可選的 speed 參數規定效果的時長。它可以取以下值:"slow"、…

Error: This command has to be run with superuser privileges (under the root user on most systems).

意思是錯誤:此命令必須以超級用戶權限(在大多數系統上以root用戶權限)運行。所以當前的用戶是普通用戶,需要切換為超級用戶(root用戶)先輸入在命令行中輸入 su root 然后會出現Password:&#…

圖靈獎得主(三)

本文轉自:本文轉自:http://bbs.gxnu.edu.cn/bbsanc.php?path%2Fgroups%2FGROUP_5%2FProgramming%2Fother%2FM.1029997222.A 繼1979年度圖靈獎首次授予一位加拿大學者K.E.Iverson之后, 1989年度的圖靈 獎又一次授予加拿大學者威廉凱亨(Willia…

對微信公共號的理解

通過redirect_uri獲取code 通過code和appid 獲取access_token 進行鑒權 轉載于:https://www.cnblogs.com/zhouyideboke/p/11309752.html

vue3 v-model變化

概覽 就變化內容而言,此部分屬于高階內容: 非兼容:用于自定義組件時,v-model的 prop 和事件默認名稱已更改: prop:value -> modelValue;event:input -> update:modelValue&a…

圖靈獎得主(四)

本文轉自:本文轉自:本文轉自:http://bbs.gxnu.edu.cn/bbsanc.php?path%2Fgroups%2FGROUP_5%2FProgramming%2Fother%2FM.1029997222.A 1991年度的圖靈獎授予了愛丁堡大學計算機科學系教授羅 賓米爾納(Robin Milner)。米爾納是繼M.V.Wilkes(1…

sql 日期類型空值等于 1900-01-01

SQL server 中查詢:select cast( as datetime) 結果:1900-01-01 00:00:00.000 做為判斷條件的話,要注意。不能直接 轉載于:https://www.cnblogs.com/meng9527/p/11311765.html

koa洋蔥模型

Koa 和 Express 都會使用到中間件 Express的中間件是順序執行,從第一個中間件執行到最后一個中間件,發出響應如上圖 Koa是從第一個中間件開始執行,遇到 next 進入下一個中間件,一直執行到最后一個中間件,在逆序&#x…

圖靈獎得主(五)

[1993]斯坦恩斯--"打工"帶來的機遇 斯坦恩斯是學數學出身的。1958年他在卡爾頓學院(Carlton College)取 得數學學士學位后進入普林斯頓大學研究生院,用了3年時間就 取得博士學位,其博士論文課題是關于博奕論的。 斯坦恩斯跨進計算機科…

koa后端允許跨域

舉個例子 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-width…

python面向對象之繼承

面向對象之繼承 什么是面向對象的繼承&#xff1f; 繼承&#xff08;英語&#xff1a;inheritance&#xff09;是面向對象軟件技術當中的一個概念。如果一個類別A“繼承自”另一個類別B&#xff0c;就把這個A稱 為“B的子類別”&#xff0c;而把B稱為“A的父類別”也可以稱“B是…

美國正面臨“人才泡沫”破裂危機?

&#xff08;Jason Lane和Kevin Kinser/文&#xff09;最近&#xff0c;與教育有關的種種問題在美國社會引起了廣泛討論。首先巨額的學生貸款問題&#xff1a;根據美聯儲紐約分行在2012年11月發布的一份報告&#xff0c;全美學生貸款總額已經達到420億美元&#xff0c;其中新增…

ngrx學習筆記

什么是ngrx ngrx是Angular基于Rxjs的狀態管理&#xff0c;保存了Redux的核心概念&#xff0c;并使用RxJs擴展的Redux實現。使用Observable來簡化監聽事件和訂閱等操作。 在看這篇文章之前&#xff0c;已經假設你已了解rxjs和redux。 有條件的話請查看官方文檔進行學習理解。 所…

解決RM刪除沒有釋放空間問題

www172-18-8-12 log]$ df -h Filesystem Size Used Avail Use% Mounted on/dev/vda1 120G 101G 20G 84% /devtmpfs 7.8G 0 7.8G 0% /devtmpfs 7.8G 0 7.8G 0% /dev/shmtmpfs 7.8G 601M 7.2G 8% /run 我刪除文件時&#xff0c;直接用的rm 沒有加參數lf,結果空間沒有釋放 文件已經…

.slice(0)

高手代碼里看到.slice(0)&#xff0c;查了下這樣寫的好處&#xff1a; 1.對原數組進行深拷貝&#xff0c;這樣進行一系列操作的時候就不影響原數組了&#xff1b; 2.將類數組對象轉化為真正的數組對象&#xff1a;var anchorArray [].slice.call(document.getElementsByTagN…