導航:首頁 > 編程大全 > matlab數字圖像處理工具箱

matlab數字圖像處理工具箱

發布時間:2023-05-31 10:39:50

① MATLAB數字圖像處理的介紹

《MATLAB數字圖像處理》利用MATLAB圖像處理工具箱進行數字圖像處理的設計與應用,簡潔困則明了地指出了所介紹的函數與方法的理論汪猜棚背景,同時又緊密兆巧聯系實際應用,以具體的實例說明了函數的使用方法。

② MATLAB數字圖像處理的目錄

前言
第1章圖像處理與MATLAB2007a簡介
1.1概述
1.1.1MATLAB概述
1.1.2數字圖像處理技術的內容與發展現狀
1.2相關學科和領域
1.2.1數字信號處理學
1.2.2計算機圖形學
1.2.3計算機視覺
1.3MATLAB2007a的新功能
1.3.1MATLAB2007a的新特性
1.3.2Simulink6的新特性
1.4MATLAB2007a圖像處理
1.4.1MATLAB圖像處理應用舉例
1.4.2圖像處理基本操作
1.4.3圖像處理的高級應用
第2章圖像的編碼和解碼
2.1概述
2.1.1圖像壓縮編碼的必要性
2.1.2圖像壓縮編碼的可能性
2.1.3圖像壓縮編碼的評價准則
2.2統計編碼
2.2.1信息熵
2.2.2ShannonFano編碼
2.2.3哈孫讓蠢夫曼編碼
2.2.4算術編碼
2.2.5行程編碼
2.3預測編碼
2.4圖像的變換編碼
2.5數據壓縮編碼的國際標准
2.5.1JPEG標准
2.5.2MPEG視頻編碼壓縮標准
2.6小結
習題
第3章圖像復原
3.1圖像復原的基本概念
3.2圖像退化模型
3.2.1連續的退化模型
3.2.2離散的退化模型
3.3非約束復原
3.3.1非約束復原的代數方法
3.3.2逆濾波復原法
3.4有約束復原
3.4.1最小二乘類約束復原
3.4.2維納濾波
3.4.3LucyRichardson濾波復原
3.4.4盲解卷積復原
3.5幾種其他圖像復原技術
3.5.1幾何畸變校正
3.5.2盲目圖像復原
3.6運動模糊圖像的復原
3.6.1模糊模型
3.6.2水平勻速直線運動引起模糊的復原
3.7小結
習題
第4章圖像處理的相關操作
4.1圖像類型轉換
4.2圖像數據結構
4.2.1圖像模式
4.2.2顏色空間
4.2.3數據存儲的數據結構
4.3線性系統和移不變系統
4.3.1線性系統
4.3.2移不變系統
4.4調用信號分析
4.4.1調諧信號
4.4.2對調諧信號的響應
4.4.3系統傳遞函數
4.5數字圖像的顯示特性
4.5.1圖像的屏幕顯示
4.5.2顯示特性
4.5.3數字圖像的暫時顯示
4.5.4數字圖像的永久顯示
4.6二維系統及矩陣運算
4.6.1二維線性系統
4.6.2二維位置不變線性系統
4.6.3二維系統的梯度運算元
4.6.4常用矩陣運算
4.7圖像的塊操作
4.7.1邊緣操作
4.7_2顯示塊操作
4.8特定區域處理
4.8.1特定區域
4.8.2特定區域濾波
4.8.3特定區域填充
4.9圖像質量評價
4.9.1圖像質量的客觀評價
4.9.2圖像質量的主觀評價
習題
第5章圖像頻域變換
5.1傅里葉變換
5.1.1傅里葉變換的基本概念
5.1.2離散傅里葉變換
5.1.3傅里葉變換的應用
5.2離散餘弦變換
5.2.1一維離散餘弦變換
5.2.2二維離散餘弦變換
5.2.3快速離散餘弦變換
5.2.4離散餘弦應用
5.3離散沃爾什-哈達瑪變換(DWT-DHT)
5.3.1一維離散沃滑清爾什變換
5.3.2二維離散沃爾什變換
5.3.3一維離散哈達瑪變換
5.3.4二維離散哈達瑪則陪變換
5.3.5離散沃爾什-哈達瑪變換的應用舉例
5.4K-L變換
5.4.1K-L變換的定義
5.4.2K-L變換的性質
5.5Radon變換
5.5.1Radon變換原理
5.5.2用Radon變換檢測直線
5.5.3逆Radon變換及其應用
5.6小波變換
5.6.1傳統變換方法的局限性
5.6.2小波變換的基本知識
5.6.3小波變換在圖像處理方面的應用及實現
5.7扇形光束投影
5.7.1投影變換的基本概念
5.7.2投影變換函數的應用
習題
第6章圖像處理中的代數運算及幾何變換
6.1基本運算類型
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.5各種幾何變換
6.5.1圖像平移變換
6.5.2圖像比例變換
6.5.3圖像旋轉變換
6.5.4圖像鏡像變換
6.5.5圖像剪切變換
6.5.6圖像復合變換
6.5.7透視投影
6.5.8平行投影
6.6灰度級插值
6.6.1最近鄰插值法
6.6.2雙線性插值法
6.6.3三次內插值法
6.6.4灰度級插值法的MATLAB實現
習題
第7章圖像增強
7.1灰度變換增強
7.1.1像素及其統計特性
7.1.2直接灰度變換
7.1.3直方圖灰度變換
7.1.4直方圖均衡化
7.1.5對比度自適應直方圖均衡化
7.1.6去相關拉伸
7.2空間域濾波
7.2.1基本原理
7.2.2平滑濾波
7.2_3銳化濾波
7.3頻域濾波增強
7.3.1低通濾波
7.3.2高通濾波
7.3.3帶通和帶阻濾波器
7.3.4頻域濾波的MATLAB實現
7.4同態增晰
7.5彩色圖像增強
7.5.1偽彩色增強
7.5.2假彩色增強
7.5.3真彩色增強
習題
第8章圖像分割與邊緣檢測
8.1灰度閾值法
8.1.1圖像分割基本原理
8.1.2灰度閾值法分割
8.2邊緣檢測
8.2.1微分運算元
8.2.2拉普拉斯高斯運算元(LOG)
8.2.3Canny運算元
8.3區域分割
8.3.1區域生長
8.3.2分裂合並
8.3.3水域分割
8.4邊界跟蹤與直線檢查
8.4.1基本原理
8.4.2直線提取演算法
8.5基於圖像分割的圖像分析
8.5.1通過圖像分割檢測細胞
8.5.2圖像粒度測定
8.6彩色圖像分割
8.6.1色彩空間
8.6.2彩色分割方法
習題
第9章小波分析及其在MATLAB中的應用
9.1小波變換基礎
9.1.1連續小波變換
9.1.2離散小波
9.1.3二進小波變換
9.1.4MATLAB中的小波函數工具箱
9.2小波分析在圖像增強中的應用
9.3基於小波的圖像降噪和壓縮
9.3.1小波的圖像壓縮技術
9.3.2小波的圖像降噪技術
9.4小波的融合技術
9.5小波包在圖像邊緣檢測中的應用
9.6小波包與圖像消噪
9.7小結
第10章圖像特徵的描述
10.1灰度描述
10.1.1幅度特徵
10.1.2直方圖特徵
10.1.3變換系數的特徵
10.2紋理分析
10.2.1紋理特徵
10.2.2統計法
10.2.3自相關函數法
10.2.4頻譜法
10.2.5紋理的句法結構分析法
10.2.6聯合概率矩陣法
10.3形狀描述
10.3.1鏈碼
10.3.2傅里葉描述子
10.3.3形狀特徵的描述
10.4區域描述
10.4.1幾何特徵
10.4.2不變矩
10.5形態分析
10.6區域、對象及特性度量
10.6.1連通區域標記
10.6.2選擇對象
10.6.3圖像面積
10.6.4歐拉數
10.6.5基於分水嶺的圖像分割示例
習題
第11章MATLAB圖像處理的應用
11.1MATLAB在遙感圖像處理中的應用
11.1.1遙感簡介
11.1.2利用MATLAB對遙感圖像進行直方圖匹配
11.1.3對遙感圖像進行濾波增強
11.1.4對遙感圖像進行融合
11.2MATLAB在醫學圖像處理中的應用
11.2.1醫學成像簡介
11.2.2醫學圖像的灰度變換
11.2.3基於高頻強調濾波和直方圖均衡化的醫學圖像增強
習題
附錄
附錄AMATLAB6.X圖像處理工具箱函數
附錄BMATLAB7.0圖像處理工具箱新增函數
參考文獻
……

③ 如何利用matlab軟體實現水印添加和提取

3 視頻水印的嵌入和檢測方案
3.1水印的預處理
採用二值圖像作為待嵌入的水印數據,本文針對的研究對象因為是二維圖像故採用的是二維Arnold變換。
二維Arnold變換定義為:
(3-1)
其中,(x,y)是原圖像的像素點,(x』,y』)是變換後新圖像的像素點,N是圖像階數,即圖像的尺寸大小,一般多為正方形圖像。由於Arnold變換具有周期性,因此可利用其周期性Period來對圖像進行反變換。即在水印嵌入過程中可將水印置亂次數作為密鑰times,再進行水印嵌入,當水印提取出來時,再將其繼續: (Period-times)次即可使其恢復至原圖。這就是利用Arnold的正變換來進行的置亂恢復方案。Arnold變換次數由版權所有者保管。
對水印進行置亂有以下優點:
(1) 採用置亂技術的合法者可以自由控制演算法的選擇,參數的選擇以及使用隨機數技術,從而使非法使用者難以破譯圖像內容,可以提高水印信息的安全性;
(2) 置亂技術可以分散錯誤比特的分布,提高數字水印的視覺效果,從而增強其魯棒性。
3.2 視頻水印的嵌入
水印嵌入演算法關鍵在於以下三點:
(1) 水印的結構;
(2) 水印的嵌入區域;
(3) 嵌入技巧;
本文選取二值圖像作為水印。為了提高水印的魯棒性,大多數的DCT域水印演算法把水印信號嵌入到DCT系數的低頻部分。但低頻區域是圖像的能量集中部分,嵌入到低頻會降低透明性。而嵌入在高頻雖然透明性比較好,但對大多數的圖像處理對高頻成分影響較大,從而降低水印的魯棒性.於是大多數的水印演算法將水印信號嵌入在載體圖像DCT系數的中頻部分,以達到透明性和魯棒性的最佳折衷。各種嵌入技巧的最終目的還是為了盡量地提高水印的魯棒性和透明性。
用於版權保護的數字水印在盡量提高魯棒性的同時還要滿足人類的視覺極限,因此必須根據HVS找到嵌入位置。
本文將HVS歸納為運動敏感性、紋理敏感性和亮度敏感性。在接下來的嵌入過程中,充分利用了這些特性。如圖3-1中間分支所示。
嵌入過程如圖3-1所示。

圖3-1 水印嵌入過程
從視頻中讀取亮度分量Y,因為它是最有效的數據,根據NEC演算法,嵌入到它裡面的水印才具有最強的魯棒性。根據式(3-2)所示的運動敏感性閾值計算公式,尋找32幀滿足敏感性比較大的視頻幀Yi (i=1,2,…32)。
(3-2)
其中 (t代表當前幀的編號)
接下來,將Y32中的數據按照64*64的尺寸切分成20塊BYij (j=1,2,…20),於是我們可得到20塊尺寸為64*64*32的三維數據塊BYk (k=1,2,…20),如圖2-3所示。

圖3-2 亮度分量的分塊
根據式(3-3)、式(3-4)所示的亮度敏感性Lk和紋理敏感性Dk計算公式,通過計算,我們選擇計算值都比較高的20塊數據中的一塊 ( )作為水印的嵌入塊。
(3-3)

(3-4)
其中, 是BYk中的亮度數據, 。
最後,折衷考慮復雜度和性能,我們對選定的一塊數據塊 實施了2階三維DCT變換。根據NEC演算法的思想,且為了抵抗濾波和壓縮攻擊,我們將置亂後的水印序列嵌入到了第一幀DCT系數c(u,v)中,詳見式(3-5)。
(3-5)
其中,w(u,v)是水印序列中的數據,c(u,v)是DCT變換後第一幀中的系數,c』(u,v)是嵌入水印後的系數,S是非負整數(且滿足T1=S/4, T2=3*T1)。
嵌入完成後,對c』(u,v)實施反2階三維DCT變換就得到了嵌入水印後的視頻數據,再將它們放回原來的位置即可。
需要說明的是,在整個嵌入過程中,所有用到的參數都應作為密鑰保留。
具體方案如下所述:
第一步:抽取32幀視頻Y分量數據:
(1) 讀取視頻文件
(2) 提取所有的Y分量,把所有的Y分量分為32組;
(3) 每組4幀,從各組中選出一個最運動敏感的,判斷每組中最大的Y_deltmax,存入變數m;
(4) 定位最大的Y_deltmax,存入變數w;
Y32是就是所需的視頻幀中Y分量滿足敏感性的32幀視頻 (355*288*32)。
第二步:分塊過程:
(1) 對行分塊(4塊);
(2) 對列分塊(5塊);
(3) 隔十幀取一幀,共從32幀中取4幀以降低運算量;
(4) 一個數一個數的賦值;
切成20塊,每塊為64*64*4的數據塊BY,維數不同,只能逐個象素賦值。
第三步:根據公式計算數據塊BY的亮度敏感性L和紋理敏感性D
第四步:選取L和D都比較大的一塊嵌入水印
(1) 判斷最大的L,存入變數Lm;
(2) 去掉這個最大的塊再比較;
(4) 賦第一塊的L的權重為20;
(5) 計算第2塊到第20塊的L的權重;
(6) 同理對D進行處理;
(7) 計算每塊BY的權重;
(8) 對所有的20塊BY的權重qz按由小到大的順序進行排序,並保持原來的位置索引index,則index[20]就是所要選取的塊;
第五步:三維DCT變換
由於視頻是由圖像數據流組成的,所以可以把視頻的每一幀看作是一幅靜止的圖像。對運動圖像序列進行3D-DCT,可以視為先對視頻的每一幀進行2D-DCT,再對幀間方向進行1D-DCT。
第六步:嵌入水印數據
將置亂的水印序列嵌入所選的DCT系數中,即嵌入經過3D-DCT變換後的數據塊中的第一幀數據中。然後把這些數據進行反3D-DCT變換後放回原位置。
第七步:將所選的數據放回原位置
最後一步:寫視頻文件
3.3視頻水印的檢測
水印提取是嵌入的逆過程,本演算法的一大優勢是,水印提取時無需原始視頻數據的參與,但依然需要一些參數。它們是:
(1) 嵌入過程第四步產生的塊BY的排序結果,由此我們可以得知水印的大致嵌入位置;
(2) 嵌入時指定的參數S;
(3) 需要Arnold變換的次數和周期;
獲得了上面的各項參數,水印的提取就十分簡單,具體過程如圖3-3所示。

圖3-3 水印盲提取過程
方案如下:
從待提取水印的視頻數據 (可能是被攻擊過後的視頻)中抽取出亮度分量Y』,根據密鑰,抽出32幀中的四幀亮度分量 ,然後分別從這組數據中提取水印。
在圖3-3中,首先將 分隔成20塊 ,並找到和 對應的 。然後,對 做二階三維DCT變換,根據式(3-6)提取出水印數據 。
(3-6)
其中, 是DCT系數。
最後,我們將 進行Arnold變換,得到水印圖像,作為最終提取出的水印。
具體步驟如下所述:
第一步:抽取32幀視頻Y分量數據:
(1) 讀取嵌入水印圖像的視頻文件;
(2) 提取所有的Y分量,把所有的Y分量分為32組;
(3) 每組4幀,從各組中選出一個最運動敏感的,判斷每組中最大的Y_deltmax,存入變數m;
(4) 定位最大的Y_deltmax,存入變數w;
Y32是就是所需的視頻幀中Y分量滿足運動敏感性的32幀視頻,Y32是一個355*288*32的三維數組。
第二步:分塊過程:
(1) 對行分塊(4塊);
(2) 對列分塊(5塊);
(3) 隔十幀取一幀,從32幀中共取4幀以降低運算量;
(4) 一個數一個數的賦值;
切成20塊,每塊為64*64*4的數據塊BY,維數不同,只能逐個象素賦值。
經過計算其亮度敏感性和紋理敏感性並排序,index[20]就是本文演算法中嵌入水印的塊;
第三步:三維DCT變換
第四步:Arnold變換
由於本演算法中水印圖像是二值圖像,其Arnold變換是二維變換,周期是Period,嵌入水印時變換了times次,所以此處只需變換(Period-times)次就可得到結果。
第五步:寫圖像文件
提取水印圖像數據並寫成圖像文件
第六步:檢測水印圖像存在與否,並與原水印圖像比較。
最後一步:進行實驗,驗證本文演算法的可見性和魯棒性。
經過以上步驟就是水印圖像信息嵌入視頻中的方法,具體實現過程見第四章。

4 用MATLAB實現視頻水印的嵌入和檢測
Matlab是近年來在國內外廣泛流行的一種可視化科學計算軟體。它的特點是結構簡單、數值計算高效、圖形功能完備、圖像處理方便,是國際公認的最優秀的科學計算與數學應用軟體之一。利用Matlab實現數字水印圖像演算法便捷、高效,省去了繁瑣的程序代碼,避免了科研人員在編程上浪費精力。
其內容已涉及矩陣代數、微積分、應用數學、信號與系統、神經網路、小波分析及應用、數字圖像處理、計算機圖形學、自動控制與通信技術等諸多方面,是科學計算、系統模擬、信號與圖像處理的主流軟體,受到了各方科研人員的青睞,在數字水印技術中得到了廣泛的應用。將Matlab應用於數字水印技術,其優點主要有以下幾個方面:
(1) 強大的數值計算功能
視頻水印技術是針對圖像進行研究的,而圖像是由矩陣表達的,將水印嵌入視頻中及從視頻中將水印提取出來都意味著大量的矩陣運算,而矩陣運算更是Matlab語言的核心,表達自然、直接。因此,利用Matlab強大的矩陣運算功能來實現圖像水印技術非常合適。
(2) 方便的圖像讀取和顯示功能
視頻水印首先要將數據從視頻中讀取出來,嵌入水印後還要將嵌入水印後的數據還原為視頻。Matlab為用戶提供了專門的圖像處理函數,用於讀寫顯示圖像數據。這種方法不像其他編程語言那樣,需要編寫復雜的代碼,只需要簡單地調用Matlab提供的函數即可,相關的函數及其功能主要有下列一些:
imread 將圖像讀入工作空間;
imwrite 將圖像寫入磁碟;
image 提供最原始的圖像顯示函數;
imshow 是最常用的顯示各種圖像的函數;
load將文件讀入工作空間;
(3) 高效的圖像變換功能
數字水印嵌入演算法一般分空域方法和頻域方法。空域方法指通過改變象素的亮度值來加入數字水印:頻域方法指圖像通過某種變換後再嵌入數字水印。與空域法相比,頻域法具有如下優點:在變換域中嵌入的水印信號可以分布到空域的所有象素上,有利於保證水印的不可見性。在變換域中,視覺系統的某些特性(如視頻特性)可以更方便地結合到水印編碼過程中。變換域的方法可以與國際數據壓縮標准兼容,從而實現壓縮域內的水印編碼。因此,變換域的方法應是水印演算法未來趨勢的主流。但是變換域的演算法一般來講計算量都比較大,需要復雜的編程運算,Matlab則改變了這種現狀。在Matlab圖像處理工具箱中,提供了常用的圖像變換函數,復雜的變換域演算法在Matlab中只需簡單地調用函數即可實現,充分體現了使用Matlab的簡便性和高效性。
主要圖像變換函數如下:
dct是一維離散餘弦變換;
idct是一維離散餘弦逆變換;
dct2是二維離散餘弦變換;
idct2是二維離散餘弦逆變換;
(4) 豐富的圖像處理函數
水印技術要求嵌入的水印不可見且有較強的魯棒性。不可見性可通過視覺效果和計算圖像的峰值信噪比來比較優劣,而魯棒性則要對水印後圖像進行各種攻擊,通過比較攻擊後圖像提取出的水印情況來說明問題。Matlab有各種圖像處理函數,可實現對圖像的各種攻擊。
綜上所述,Matlab具有語言簡潔、函數豐富、使用方便、數值計算高效等特點,將功能強大的Matlab軟體應用於數字水印技術是有效的選擇,因此,本文採用Matlab對圖像水印進行研究。
4.1水印的嵌入過程
(1) 基於Arnold變換的圖像置亂
Matlab實現如下:
Arnold變換由function r=Arnold(w0,row,colum,times) 實現,其中w0為讀取的圖像數據,row是行數,colum是列數,times是Arnold變換次數。
function r=Arnold(w0,row,colum,times)
for k=1:times
for i=1:row
for j=1:colum
i1=i+j;
j1=i+2*j;
if i1>row
i1=mod(i1,row);
end
if j1>colum
j1=mod(j1,colum);
end
if i1= =0
i1=row;
end
if j1= =0
j1=colum;
end
w1(i1,j1)=w0(i,j);
end
end
w0=w1;
end
r=w0;
用imwrite(w0,'Arnold.bmp', 'bmp')寫置亂後的圖像文件;在MATLAB中用imshow('Arnold.bmp')顯示此圖像。
本文採用二維的二值水印圖像watermark.bmp,我們將圖像數據(64*64)掃描到二維的矩陣中並實施Arnold變換,從而得到置亂後的二維矩陣。隨著迭代次數的增加,圖像逐漸趨於混亂,不過到一定次數時,又將回到原圖。因為watermark.bmp大小為64*64,故經過試驗圖像迭代48次後將回到原圖,即周期性Period=48。
本演算法選擇置亂8次,因為8次Arnold變換後原水印圖像已經成為無形狀的圖像。實驗結果表明,該方法能較好地刻劃圖像的置亂程度,與人的視覺基本相符。但需要指出的是不一定圖像的置亂次數越多其置亂度就越高。所以,在水印嵌入時,為了提高其魯棒性而增加置亂次數的方法是不科學的,合理的做法是計算置亂後圖像的置亂度,達到較為滿意的置亂度後就可停止置亂,避免盲目的提高置亂次數。
置亂次數作為密鑰有視頻版權所有者保管,如果非法所有者不知道置亂次數就很難恢復出原水印圖像。
原水印圖像如圖4-1所示,本演算法實現置亂8次後效果如圖4-2所示:

圖4-1 水印原圖像 圖4-2 置亂8次後
(2)Matlab實現嵌入過程:
本文中選取352×288×142的yuv格式視頻流進行測試。YUV顏色模型是一種常用的顏色模型,其基本特徵是將亮度信號與顏色信號分離,由於人眼對亮度的變化比對顏色的變化敏感,因此,YUV模型中Y分量的值所佔帶寬大於等於彩色分量所佔帶寬。YUV色彩空間模型可以在一定程度上避免RGB模型的高分散性和高相關性所帶來的閉值劃分問題,計算也較為簡單。這種色彩空間模型中Y和UV分量是相互獨立的,反映了人眼觀察彩色的視覺規律,在實際中應用較多。其中「Y」表示明亮度(Luminance或Luma),也就是灰階值;而「U」和「V」表示的則是色度(Chrominan「或Chroma),作用是描述影像色彩及飽和度,用於指定像素顏色。因此選擇YUV顏色空間更加穩定,易於分析。
本文選擇測試視頻中的第39幀如圖4-3所示。YUV格式的視頻中Y:U:V=4:2:2,但通俗叫「420」格式。

圖4-3 未嵌入水印的視頻
第一步:讀取文件;
讀取視頻文件由[yuv,Y,u,v,num_f]=loadyuv(filename)實現,filename是所選取得視頻文件名稱。yuv是一個四維數組,它返回的是視頻的yuv分量,Y是亮度分量,u和v是色彩分量,num_f是視頻文件中所有幀的數目。
讀取一幀數據的YUV分量在Matlab中由以下源代碼實現:
function [YUV,Y,U,V] = loadFileYUV(width,heigth,Frame,fileName,format)
[Teil_h,Teil_b]=YUVFormat(format);
fileId = fopen(fileName,'r');
其中width:每一幀的寬度;heigth:每一幀的高度;Frame:當前load的那一幀;filename:視頻文件名;Teil_h:垂直比例參數;Teil_b:水平比例參數;YUV:返回值,返回YUV分量,是一個三維變數,本文演算法中將U、V分量的寬度和高度設成與Y一樣的了,因此U、V分量中有重復的。YUV(:,:,1)存放Y分量;YUV(:,:,2)存放U分量;YUV(:,:,3)存放V分量;Y,U,V是三個分量的實際值,二維矩陣,沒有重復,他們的長度可能不一樣。
Y_delt(j)=delt(Y(:,:,w(i)),Y(:,:,4*(i-1)+j));
其中Y_delt是當前幀與下一組各幀的Y的差,m(i)=max(Y_delt(j));判斷每組中最大的Y_deltmax,存入變數m,以此來得到每組中最運動敏感的視頻幀。w(i+1)=4*(i-1)+k定位最大的Y_deltmax,存入變數w。
最後得到Y32=double(Y(:,:,w)), Y32是視頻幀中Y分量滿足敏感性的32幀視頻是一個355*288*32的三維數組。
第二步:分塊;
分塊時因為需要塊標號,由此造成維數不同,所以只能逐個象素賦值,在Matlab中由BY(t1,t2,t3,j*5+k+1)= double(Y32((64*j+t1),(64*k+t2),i))實現,切成20塊,每塊為64*64*4的數據塊BY ,其中t1是塊的杭坐標,t2是塊的列坐標,t3幀標號,j*5+k+1是快標號。
第三步:三維DCT變換;
運動圖像序列的每一幀可以看作是靜止圖像 對運動圖像序列進行3D DCT,可以視為先對每幀進行2D DCT,再對幀間方向進行1D DCT。
%對每一塊的幀間方向進行1D DCT變換
for i=1:64
for j=1:64
dcta(i,j,1:4,index(20))=dct(BY(i,j,1:4,index(20)));
end
end
%對每一塊的每一幀進行2D DCT
for i=1:4
dct3a(:,:,i,index(20))=dct2(dcta(:,:,i,index(20)));
end
第四步:嵌入水印過程;
讀入二值水印圖像由message=double(imread('watermark.bmp'))實現 ,message是一個由0和1組成的二維數組。
將置亂的水印序列嵌入所選的dct系數中,源代碼如下所示:
其中dct3a是DCT系數,index[20]是紋理敏感性和亮度敏感性都比較好的一塊,S作為密鑰由版權所有者保管。
S=60;
T1=S/4;
T2=3*T1;
for i=1:64
for j=1:64
if (w2(i,j)==1)
if (dct3a(i,j,1,index(20))>=0)
dipin(i,j)=dct3a(i,j,1,index(20))-mod(dct3a(i,j,1,index(20)),S)+T1;
end
if (dct3a(i,j,1,index(20))<0)
dipin(i,j)=dct3a(i,j,1,index(20))+mod(abs(dct3a(i,j,1,index(20))),S)-T1;
end
end
if (w2(i,j,:)==0)
if (dct3a(i,j,1,index(20))>=0)
dipin(i,j)=dct3a(i,j,1,index(20))-mod(dct3a(i,j,1,index(20)),S)+T2;
end
if (dct3a(i,j,1,index(20))<0)
dipin(i,j)=dct3a(i,j,1,index(20))+mod(abs(dct3a(i,j,1,index(20))),S)-T2;
end
end
end
end
第五步:三維DCT反變換;
先對塊的第一幀進行二維DCT反變換,然後在對其它三幀進行二維反變換,最後對幀間方向進行一維DCT反變換。此過程由Matlab實現如下:
二維DCT反變換:
idcta(:,:,1,index(20))=idct2(dipin);
for i=2:4
idcta(:,:,i,index(20))=idct2(dct3a(:,:,i,index(20)));
end
對每一塊的幀間方向進行一維DCT反變換
for i=1:64
for j=1:64
idct3a(i,j,1:4,index(20))=idct(idcta(i,j,1:4,index(20)));
end
end
第六步:把這些數據放入原位置;
第七步:寫視頻文件;
寫視頻文件由以下程序實現,其中fileId為寫入視頻文件的位置。
fileId = fopen('vectra_w.yuv','wb')
fwrite(fileId,Y(:,:,i)' , 'uchar');
fwrite(fileId,u(:,:,i)' , 'uchar');
fwrite(fileId,v(:,:,i)' , 'uchar');
效果如圖4-4所示:

圖4-4 嵌入水印的視頻
4.2水印的檢測過程
水印的檢測過程就是嵌入水印的逆過程,其Matlab實現如下所示:
filename='vectra_w.yuv';此文件是對含有水印的視頻(可能是被攻擊過後的視頻)文件。
[yuv,Y,u,v,num_f]=loadyuv(filename);
讀取視頻文件和三維DCT正變換其原理和嵌入過程相同,此處不再贅述。
提取水印數據在Matlab中由以下程序實現,其中S、T1、T2等都是嵌入時的密鑰,版權所有者擁有它。
for i=1:64
for j=1:64
if (mod(abs(dct3b(i,j,1,index(20))),S)<((T1+T2)/2))
shuiyin(i,j)=1;
end
if (mod(abs(dct3b(i,j,1,index(20))),S)>=((T1+T2)/2))
shuiyin(i,j)=0;
end
end
end
Arnold反變換如下所示:
w0=shuiyin;
w2=Arnold(w0,Hm,Wm,40);
w0是檢測到的水印數據,Hm和Wm是水印數據的行和列,變換次數為40。
寫水印文件,檢測水印圖像存在與否,並且和原水印圖像有無差異。
imwrite(w2,'恢復.bmp', 'bmp');
imshow('恢復.bmp');
綜上,水印的嵌入主要經過將視頻和水印分別進行預處理,然後根據嵌入演算法選擇水印的合適嵌入位置以及合理嵌入策略,從而得到含水印的視頻數據。在各個環節中採用HVS特性來提高視頻水印的魯棒性.最後用相應的視頻水印檢測策略提取出水印從而實現視頻的保護。結果顯示本文演算法能成功提取出水印圖像。

④ 以MATLAB軟體的圖形用戶界面(GUI)開發環境和圖像處理工具箱為平台,設計一個數字圖像處理系統。

圖像讀取:
global I
% dialog for opening files

[imagefile , pathname]= uigetfile('*.tif');
if imagefile ~= 0

filename=[pathname imagefile];

[X,map]=imread(filename);

I=X;
show_Callback(hObject, eventdata, handles)
set(handles.save,'enable','on')
end;
圖像保存:
global I
[imagefile , pathname, filterindex]= uiputfile({'*.tif','蔽耐橘tif';'*.*','All Files'},'Image Save As');
if (imagefile ~= 0 & filterindex==1)

filename=[pathname imagefile '.tif'];

imwrite(I,filename);
else (imagefile ~= 0)

filename=[pathname imagefile];

imwrite(I,filename);
end;
頻域畝檔增強:
global I
J=imnoise(I,'salt & pepper',0.02);
%gei tuxiang tianjia yanjiao zaosheng
subplot(121),imshow(J)
title('han you zaosheng de yuan tuxiang')
J=double(J);
f=fft2(J);
g=fftshift(f);
[M,N]=size(f);
n=3;d0=20;
n1=floor(M/宏團2);n2=floor(N/2);
for i=1:M

for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2);

h=1/(1+0.414*(d/d0)^(2*n));

g(i,j)=h*g(i,j);

end
end
g=ifftshift(g);
g=uint8(real(ifft2(g)));
subplot(122),imshow(g)
title('san jie Butterworth lvbo tuxiang')
FFT變換:
% 讀入原始圖像
subplot(1,2,1);
imshow(I)
title('yuan tu');
% 求離散傅立葉頻譜
J=fftshift(fft2(I));
subplot(1,2,2);
imshow(log(abs(J)),[8,10])
title('fft');

⑤ MATLAB工具箱有哪些作用

MATLAB附帶了很多工具箱(Toolbox),而且每次發布新版本時,工具箱幾乎都要增加。按F1鍵打開MATLAB的「Help」,在窗口左邊顯示了MATLAB所有的工具箱。

一般來說,每個工具箱針對一個具體的問題,如圖像處理工具箱(Image.Processing.Toolbox)專門針對數字圖像處理問題,偏微分方程工具箱(Partial.Differential.Equation.Toolbox)是偏微分方程(組)求解函數的集合。一個工具箱中包含若干函數。實際上,工具箱也是一個函數庫,在功能方面與MATLAB主體中的數值計算和數據可視化部分相同。

但有一點區別:主體部分的核心函數都是內置函數,是用C語言編寫並編譯過的;而工具箱中的函數都是基於MATLAB的二次開發,即用MATLAB語言寫的.m文件。用Editor打開這些文件,就可以看到源代碼。

⑥ 用MATLAB做數字圖像處理

你這種處理要求,好像是先對背境圖像淡化處理,再加到視頻幀上,作為背境。你有視頻文件嗎?發過來看看。

⑦ 如何利用matlab及其圖像處理工具箱進行數字圖像處理 畢業論文

利用matlab及其圖像處理工具箱進行數字圖像處理 畢業論文,我還可以給!

閱讀全文

與matlab數字圖像處理工具箱相關的資料

熱點內容
4kb的txt文件差不多多少字 瀏覽:984
u盤文件突然變成exe 瀏覽:164
現在哪些學校初中有學編程的 瀏覽:402
word查找全選 瀏覽:599
開工報告附什麼文件資料 瀏覽:150
分區工具app怎麼用 瀏覽:212
安卓堅果雲文件路徑 瀏覽:591
sqllog文件 瀏覽:236
如何在電腦中找到文件路徑 瀏覽:830
數據結構訪問和查找有什麼區別 瀏覽:401
怎麼清空icloud內的數據 瀏覽:338
微信鎖屏後音樂停止 瀏覽:668
applepay蘋果手機卡 瀏覽:835
一個14mb的文件能儲存多少萬漢字 瀏覽:478
騰訊文檔里如何導出數據 瀏覽:979
java面試題csdn 瀏覽:410
rpgnvp是什麼文件 瀏覽:594
如何將一列數據復制到excel 瀏覽:488
sd卡怎麼恢復excel文件 瀏覽:282
gdblinux內核多核調試 瀏覽:24

友情鏈接