小波的秘密2_MATLAB图像多尺度分析
生活随笔
收集整理的這篇文章主要介紹了
小波的秘密2_MATLAB图像多尺度分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.MATLAB程序編寫步驟
1.把小波w(t)和原函數f(t)的開始部分進行比較,計算系數C。系數C表示該部分函數與小波的相似程度。2.把小波向右移k單位,得到小波w(t-k),重復1。重復該部知道函數f結束.
3.擴展小波w(t),得到小波w(t/2),重復步驟1,2.
4.不斷擴展小波,重復1,2,3.
這里使用的haar小波,縮放函數是[1 1],小波函數是[1 -1],是最簡單的小波了。
2.MATLAB源代碼及分析
clear all;close all;clc; img=double(imread('Ziheng.jpg')); [m,n]=size(img);[LL,LH,HL,HH]=haar_dwt2D(img); %dwt2(img,'haar')一樣 img=[LL LH;HL HH]; %一層分解imgn=zeros(m,n); for i=0:m/2:m/2for j=0:n/2:n/2[LL,LH,HL,HH]=haar_dwt2D(img(i+1:i+m/2,j+1:j+n/2)); %對一層分解后的四個圖像分別再分解imgn(i+1:i+m/2,j+1:j+n/2)=[LL LH;HL HH]; end end imshow(imgn) function [LL,LH,HL,HH]=haar_dwt2D(img)[m,n]=size(img);for i=1:m %每一行進行分解[L,H]=haar_dwt(img(i,:));img(i,:)=[L H];endfor j=1:n %每一列進行分解[L,H]=haar_dwt(img(:,j));img(:,j)=[L H];end%本來分解不應該加mat2gray的,不過為了有好的顯示效果就加上了LL=mat2gray(img(1:m/2,1:n/2)); %行列都是低頻 LH=mat2gray(img(1:m/2,n/2+1:n)); %行低頻列高頻HL=mat2gray(img(m/2+1:m,1:n/2)); %行高頻列低頻HH=mat2gray(img(m/2+1:m,n/2+1:n)); %行列都是高頻 end%haar_dwt.m function [L,H]=haar_dwt(f)%沒有做邊界處理,圖片最好是2^n*2^n型n=length(f);n=n/2;L=zeros(1,n); %低頻分量H=zeros(1,n); %高頻分量for i=1:nL(i)=(f(2*i-1)+f(2*i))/sqrt(2);H(i)=(f(2*i-1)-f(2*i))/sqrt(2);end3.實驗結果分析
? ? ? ? ? ? ? ? ? ? ??總結
以上是生活随笔為你收集整理的小波的秘密2_MATLAB图像多尺度分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Mobile 数独游戏及
- 下一篇: XEIM 配置程序源代码