內容簡介
本書以MATLAB 8.X漢化版為工具,深入淺齣地介紹瞭基於計算機視覺係統工具箱(Computer Vision System Toolbox)的數字圖像處理的基本原理、實現方法、仿真過程、代碼生成,具有循序漸進、易於研讀的特點。本書共6章,內容包括MATLAB操作基礎、計算機視覺與數字圖像處理基礎、基於係統對象的編程、模塊化仿真、C/C++代碼的生成、雙目立體視覺及其程序實現。
本書可作為電子信息工程、計算機科學與技術相關專業的本科生、研究生的教材,也可作為工程技術人員的參考資料,對數字圖像技術感興趣、計劃係統學習的讀者也可參考本書。
目錄
第1章MATLAB操作基礎
1.1矩陣操作與運算
1.1.1在MATLAB中生成矩陣
1.1.2矩陣變形操作
1.1.3矩陣的下標引用
1.1.4獲取當前矩陣信息
1.1.5矩陣運算
1.1.6矩陣關係比較
1.1.7矩陣元素值取整
1.1.8對矩陣進行邏輯運算
1.1.9矩陣分解
1.1.10查找矩陣中的最值
1.1.11查找矩陣中的元素
1.2MATLAB編程基礎
1.2.1變量命名規則及其類型
1.2.2基本程序結構
1.2.3M文件
1.2.4函數句柄與匿名函數
1.2.5MATLAB編程技巧
1.3基於Simulink的仿真
1.3.1什麼是Simulink
1.3.2Simulink模塊庫介紹
1.3.3創建一個簡單的Simulink示例
1.3.4對模塊進行基本操作
1.3.5信號綫的操作
1.4計算機視覺係統工具箱介紹
第2章計算機視覺與數字圖像處理基礎
2.1基本概念
2.1.1什麼是“計算機視覺”
2.1.2什麼是“數字圖像”
2.1.3數字圖像處理的一些基本概念
2.1.4數字圖像的矩陣錶示
2.2圖像的灰度直方圖
2.3圖像的色彩空間
2.3.1RGB色彩空間
2.3.2HSV色彩空間
2.3.3YUV空間
2.3.4HSI色彩空間
2.3.5灰度空間
2.3.6Lab色彩空間
2.4圖像的縮放變換
2.5圖像的平移變換
2.6圖像的鏇轉變換
2.7圖像的傅裏葉變換
2.7.1傅裏葉變換的物理意義
2.7.2離散傅裏葉變換
2.7.3快速傅裏葉變換
2.7.4主要性質
2.8圖像的餘弦變換
2.9圖像的腐蝕和膨脹
2.9.1圖像的腐蝕
2.9.2圖像的膨脹
2.10圖像的開運算、閉運算
2.10.1圖像的開運算
2.10.2圖像的閉運算
2.11圖像的中值濾波
2.12圖像的角點檢測
2.13圖像的邊緣檢測
2.13.1運用一階微分算子檢測圖像邊緣
2.13.2運用二階微分邊緣檢測算子檢測圖像邊緣
2.13.3Canny邊緣檢測算子
第3章基於係統對象的編程
3.1基於係統對象編程的介紹
3.2圖像直方圖的編程實現
3.3圖像色彩空間變換的編程實現
3.4圖像縮放的編程實現
3.5圖像平移的編程實現
3.6圖像鏇轉的編程實現
3.7圖像傅裏葉變換的編程實現
3.8圖像餘弦變換的編程實現
3.9圖像腐蝕、膨脹的編程實現
3.10圖像開運算、閉運算的編程實現
3.11圖像中值濾波的編程實現
3.12圖像角點檢測的編程實現
3.13圖像邊緣檢測的編程實現
第4章模塊化仿真
4.1計算機視覺係統工具箱功能模塊介紹
4.2圖像直方圖的模塊化仿真
4.3圖像色彩空間轉換的模塊化仿真
4.4圖像縮放變換的模塊化仿真
4.5圖像平移變換的模塊化仿真
4.6圖像鏇轉變換的模塊化仿真
4.7圖像傅裏葉變換的模塊化仿真
4.8圖像餘弦變換的模塊化仿真
4.9圖像腐蝕膨脹的模塊化仿真
4.10圖像開運算、閉運算的模塊化仿真
4.11圖像中值濾波的模塊化仿真
4.12圖像角點檢測的模塊化仿真
4.13圖像邊緣檢測的模塊化仿真
第5章C/C++代碼的生成
5.1如何打開MATLAB Coder交互界麵
5.2MATLAB Coder所支持轉換的類型
5.3簡單程序的C/C++代碼生成
5.4通過命令實現C代碼的生成
5.5圖像縮放算法的代碼生成與運行
第6章雙目立體視覺及其程序實現
6.1雙目立體視覺基本理論
6.1.1攝像機成像模型
6.1.2雙目立體視覺原理
6.1.3雙目立體視覺係統基本概念
6.2雙目立體視覺係統攝像機標定
6.2.1攝像機標定概念
6.2.2攝像機標定常用方法
6.2.3例程精講: 使用棋盤格進行標定
6.3立體圖像校正
6.3.1立體圖像校正原理
6.3.2例程精講: 立體圖像校正
6.4立體匹配
6.4.1立體匹配約束準則確定
6.4.2匹配代價函數與代價計算
6.4.3視差計算及優化
6.4.4例程精講: 視差計算
6.5三維重建
6.5.1空間點三維重建
6.5.2例程精講: 三維重建
參考文獻
精彩書摘
第5章C/C++代碼的直接生成
在MATLAB的産品族中,MATLAB Coder、Simulink Coder可以直接將MATLAB代碼、Simulink仿真模型轉換成高效優化的C/C++語言程序代碼,這些C/C++代碼可以脫離MATLAB環境獨立運行,這樣大大減少瞭軟件工程師的編寫代碼工作量,並且提高瞭軟件編寫的規範性,縮短瞭産品軟件的研發周期。
5.1如何打開MATLAB Coder交互界麵
方法1: 單擊“應用程序”菜單中的MATLAB Coder,如圖5.1.1所示。
圖5.1.1“應用程序”菜單中的MATLAB Coder
方法2: 在命令行窗口中輸入coder命令,如圖5.1.2所示。
圖5.1.2在命令行窗口中輸入coder命令
通過上述兩種方法打開的MATLAB Coder交互界麵如圖5.1.3所示。
圖5.1.3打開的MATLAB Coder交互界麵
5.2MATLAB Coder所支持轉換的類型
MATLAB Coder所支持的轉換類型如錶5.2.1所示。
錶5.2.1MATLAB Coder所支持的轉換類型
矩陣和數組類和數據類型編程結構函數
矩陣運算
N維數組
下標操作
幀
持續變量
全局變量復數
整形數據匹配
單精度雙精度
定點運算
字符
結構體
數值類
變長度數據
係統對象數學運算
邏輯關係操作符
程序控製語句(if,for,while,switch)和結構部分MATLAB函數
和係統對象
5.3簡單程序的C/C++代碼生成
步驟1: 編寫一個M函數foo.m,如圖5.3.1所示,用於計算a與b相乘。
圖5.3.1編寫的M函數foo.m
注意: 在函數的第一行結尾加入關鍵詞“%#codegen”,它告訴MATLAB正在使用的函數用於代碼生成,需要使用MATLAB Coder工具。
步驟2: 在命令行窗口輸入coder(圖形界麵),按Enter鍵,彈齣MATLAB Coder Project對話框,輸入工程名foo.prj,如圖5.3.2所示。
圖5.3.2新建一個工程名為foo.prj的工程
步驟3: 在新建完工程之後,單擊Build標簽,將Output type設置為C/C++ Static Library,如圖5.3.3所示,用於生成靜態的可獨立運行的C/C++代碼庫。單擊More settings,彈齣“工程設置”窗口,單擊“所有設置”,在Language選項上通過下拉菜單選擇C++,如圖5.3.4所示。
……
前言/序言
前言
隨著信息處理技術和計算機技術的飛速發展,計算機視覺技術已在工業檢測、監控偵察、人機交互等領域受到瞭廣泛的重視並取得瞭眾多成就。
近年來,MATLAB軟件針對數字圖像處理技術推齣瞭諸多新功能,計算機視覺係統工具箱(Computer Vision System Toolbox)便是其中典型的代錶。與圖像處理工具箱(Image Processing Toolbox)相比,計算機視覺工具箱引入瞭基於係統對象(System Object)和基於模型的處理模式,使其處理速度更快,交互性更強。同時,該工具箱的絕大多數函數、係統對象、模型支持代碼轉換,可自動生成可讀、可運行、可移植的C/C++代碼。
本書以MATLAB 8.X漢化版為工具,深入淺齣地介紹瞭基於計算機視覺係統工具箱的數字圖像處理的基本原理、實現方法、仿真過程和代碼生成。
本書具有如下特色:
(1) 本書將基本原理、仿真實現、編程實現、代碼轉換有機地結閤,實現瞭對計算機視覺係統工具箱全方位的講解。
(2) 根據編者近些年來從事教學、科研的經驗,列舉瞭MATLAB計算機視覺工具箱的實現實例,並附有詳細注解;在每個例子中都有運行效果圖,使讀者具有身臨其境的感覺。
(3) 本書在講解的過程中,分享瞭作者的一些心得,實用性強,有利於讀者快速上手。
本書共6章,內容包括 MATLAB操作基礎、計算機視覺與數字圖像處理基礎、基於係統對象的編程、模塊化仿真、C/C++代碼的生成、雙目立體視覺及其程序實現。
本書適用於以下人群: 對數字圖像技術感興趣、計劃係統學習的讀者,電子信息工程、計算機科學技術相關專業的本科生、研究生,以及工程技術人員。
本書的第1章由唐弘毅編寫,第6章由何灝編寫,其餘各章由趙小川編寫,唐弘毅也參與瞭編寫工作,邱帥睿、於遜、劉祥、李陽分彆對本書進行瞭資料整理及校對。
趙小川
2017年12月
《 MATLAB計算機視覺實戰:精通MATLAB 》 簡介 在當今科技飛速發展的時代,計算機視覺作為人工智能領域的核心分支,正以前所未有的速度滲透到我們生活的方方麵麵。從自動駕駛汽車的“眼睛”,到醫療影像診斷的“助手”,再到安防監控的“哨兵”,計算機視覺技術正在重塑我們的世界。而MATLAB,憑藉其強大的數值計算能力、豐富的工具箱以及易於上手的特性,已成為計算機視覺領域不可或缺的開發和研究平颱。 本書,《 MATLAB計算機視覺實戰:精通MATLAB 》,旨在為廣大計算機視覺愛好者、學生、研究人員以及工程師提供一本全麵、實用且深入的參考指南。它將帶您踏上一段由淺入深、循序漸進的MATLAB計算機視覺實踐之旅,讓您不僅能夠理解計算機視覺的核心概念,更能熟練運用MATLAB工具箱解決實際問題,從而真正“精通MATLAB”在計算機視覺領域的應用。 本書特色與內容概述: 本書內容豐富,涵蓋瞭計算機視覺的多個關鍵領域,並以大量的實際案例和代碼示例貫穿始終,強調動手實踐,力求讓讀者在“學”的同時,“做”,在“做”的過程中,“悟”。 第一部分:MATLAB基礎與計算機視覺入門 在深入探討計算機視覺算法之前,我們首先會為您打下堅實的MATLAB基礎。您將學習: MATLAB環境與基本操作: 熟悉MATLAB的界麵、變量管理、基本數據類型、運算符、控製流語句(if-else, for, while)等,為後續的編程實踐做好準備。 矩陣運算與圖像處理基礎: 深入理解MATLAB在矩陣運算方麵的優勢,以及如何進行基本的圖像讀寫、顯示、像素訪問、顔色空間轉換(如RGB轉灰度、HSV)等操作。 MATLAB圖像處理工具箱概覽: 介紹MATLAB圖像處理工具箱(Image Processing Toolbox)的核心功能,包括各種預處理函數、濾波、形態學操作等,為您打開通往圖像處理世界的大門。 第二部分:圖像預處理與特徵提取 清晰、有意義的圖像是進行後續分析的前提。本部分將重點講解如何通過有效的預處理手段提升圖像質量,並介紹多種關鍵的特徵提取技術: 噪聲抑製與圖像增強: 學習各種降噪濾波器(如高斯濾波、中值濾波、雙邊濾波),以及對比度增強、直方圖均衡化等方法,讓模糊的圖像變得清晰,細節得以展現。 幾何變換與圖像校正: 掌握圖像的縮放、鏇轉、平移、仿射變換、透視變換等操作,學習如何進行圖像配準、畸變校正,為後續的物體識彆和跟蹤奠定基礎。 邊緣檢測與輪廓提取: 探索Canny、Sobel、Laplacian等經典的邊緣檢測算法,學習如何利用形態學操作(腐蝕、膨脹、開運算、閉運算)來提取和分析圖像中的輪廓。 角點檢測與斑點檢測: 學習Harris、Shi-Tomasi等角點檢測算法,以及Blob分析技術,理解這些特徵點在圖像匹配、目標跟蹤等任務中的重要作用。 SIFT、SURF、ORB等局部特徵描述符: 深入學習這些強大的局部特徵提取和描述算法,理解它們在尺度不變性、鏇轉不變性等方麵的優勢,並學習如何在MATLAB中實現它們,為圖像匹配和物體識彆打下基礎。 HOG(方嚮梯度直方圖)特徵: 學習HOG特徵的原理及其在行人檢測等任務中的應用,理解如何通過提取圖像局部區域的梯度信息來構建特徵描述。 第三部分:圖像分割與目標識彆 圖像分割是將圖像劃分為有意義的區域,而目標識彆則是識彆圖像中的特定對象。本部分將聚焦於這些核心的計算機視覺任務: 閾值分割技術: 學習全局閾值、局部閾值、Otsu's方法等多種閾值分割技術,理解如何根據像素灰度值進行二值化處理,分離前景與背景。 區域生長與區域分裂閤並: 探索基於像素相似度的區域生長算法,以及區域分裂閤並策略,學習如何根據像素的連通性和相似性來構建圖像的語義區域。 Watershed(分水嶺)算法: 深入理解分水嶺算法的原理,學習如何利用其將圖像分割成不同的區域,特彆是在處理相互接觸的物體時。 聚類算法在分割中的應用: 學習K-Means、Mean Shift等聚類算法,理解如何利用這些算法對圖像像素進行分組,從而實現圖像分割。 基於模闆匹配的識彆: 學習如何使用模闆匹配技術來定位和識彆圖像中與預定義模闆相似的對象。 機器學習基礎與分類器: 引入支持嚮量機(SVM)、K近鄰(KNN)、決策樹等經典的機器學習分類器,並講解它們在圖像分類任務中的應用。 Haar特徵與Adaboost算法: 深入理解Haar特徵的原理,以及Adaboost算法如何結閤Haar特徵進行級聯分類器訓練,並重點講解如何利用MATLAB的Computer Vision Toolbox和Deep Learning Toolbox實現人臉檢測等經典應用。 第四部分:運動分析與目標跟蹤 理解圖像序列中的運動信息是計算機視覺的重要組成部分。本部分將帶您深入研究運動分析與目標跟蹤技術: 光流法(Optical Flow): 學習Lucas-Kanade、Horn-Schunck等經典光流算法,理解如何計算圖像幀之間像素點的運動嚮量,從而分析物體的運動軌跡。 幀間差分法: 學習如何通過比較連續幀的差異來檢測運動目標,理解其優點與局限性。 背景減除法: 掌握多種背景減除模型(如高斯混閤模型GMM),理解如何構建背景模型並從中分離齣前景運動目標。 基於特徵點跟蹤: 學習如何利用SIFT、SURF等局部特徵點,並通過跟蹤這些特徵點來實現目標的持續跟蹤。 卡爾曼濾波器(Kalman Filter)與粒子濾波器(Particle Filter): 深入理解這些強大的跟蹤算法,學習如何利用它們來預測和更新目標的狀態,提高跟蹤的魯棒性。 Mean-Shift跟蹤算法: 學習Mean-Shift算法在目標跟蹤中的應用,理解其通過迭代搜索來尋找概率密度峰值的方法。 第五部分:立體視覺與三維重建 感知深度信息並構建三維場景是計算機視覺的終極目標之一。本部分將帶您進入立體視覺和三維重建的世界: 相機模型與標定: 學習相機成像模型(針孔模型、畸變模型),以及如何進行相機內參和外參標定,理解相機標定對於三維重建的重要性。 立體匹配: 深入研究SGM(Semi-Global Matching)、BM(Block Matching)等立體匹配算法,理解如何通過計算視差圖來恢復深度信息。 深度圖的計算與處理: 學習如何根據視差圖生成深度圖,並進行平滑、濾波等後處理操作。 點雲數據處理: 介紹點雲數據的概念,學習如何使用MATLAB的點雲處理工具箱來加載、可視化、分割和濾波點雲數據。 三維重建基礎: 介紹基於多視圖幾何的三維重建原理,講解如何從多張二維圖像恢復齣三維場景。 第六部分:深度學習在計算機視覺中的應用 近年來,深度學習以前所未有的方式推動瞭計算機視覺的發展。本部分將為您揭示深度學習的強大力量: 深度學習基礎: 介紹神經網絡、捲積神經網絡(CNN)等核心概念,讓您理解深度學習模型的工作原理。 MATLAB深度學習工具箱: 重點介紹MATLAB的Deep Learning Toolbox,演示如何利用該工具箱構建、訓練和部署深度學習模型。 圖像分類與物體檢測: 學習如何利用預訓練模型(如AlexNet, VGG, ResNet)進行遷移學習,實現高效的圖像分類和物體檢測任務。 語義分割與實例分割: 介紹FCN、Mask R-CNN等深度學習模型,並演示如何利用它們進行像素級彆的圖像分割。 應用案例: 提供具體的深度學習應用案例,例如使用CNN進行圖像風格遷移、生成對抗網絡(GAN)進行圖像生成等。 實踐驅動,學以緻用: 本書最大的亮點在於其高度的實踐性。每個章節都配有豐富的MATLAB代碼示例,這些示例不僅清晰地展示瞭算法的實現過程,更直接解決瞭實際的計算機視覺問題。從簡單的圖像濾波到復雜的深度學習模型訓練,您將親手編寫代碼,運行程序,觀察結果,不斷調試和優化。 目標讀者: 計算機科學、電子工程、自動化等相關專業的在校學生: 本書是學習計算機視覺和MATLAB應用的理想教材,可以幫助您快速掌握理論知識並將其應用於實踐。 計算機視覺領域的初學者: 即使您對計算機視覺一無所知,本書也會從基礎開始,循序漸進地引導您進入這個迷人的領域。 希望將MATLAB應用於計算機視覺項目的工程師和研究人員: 本書提供瞭大量的實用技巧和案例,能夠幫助您快速解決實際工程和科研問題。 對人工智能和機器視覺感興趣的業餘愛好者: 本書將帶您領略計算機視覺的魅力,並讓您掌握動手實踐的能力。 學習本書,您將獲得: 紮實的MATLAB編程能力: 熟練掌握MATLAB在圖像處理和計算機視覺任務中的運用。 全麵的計算機視覺知識體係: 從基礎到高級,係統瞭解計算機視覺的經典算法和前沿技術。 解決實際問題的能力: 能夠利用MATLAB獨立完成各種計算機視覺項目。 “精通MATLAB”在計算機視覺領域的實力: 成為一名能夠高效運用MATLAB進行計算機視覺開發的專業人纔。 《 MATLAB計算機視覺實戰:精通MATLAB 》,期待與您一同探索計算機視覺的無限可能!