推 skies0331:好厲害!!! 12/16 01:43
※ 引述《ikjhyu (還沒想到)》之銘言:
: 請問有人知道 jpeg2000
: 裡面的5/3和9/7兩種小波模式
: 各是用matlab裡面哪個指令嗎?
: 可否可以給一個簡單的dwt2再idwt2回去的小例子嗎?
: 用9/7和5/3兩種mode
: 另外假如讀入一張圖應該是要先減128
: 再去做小波轉換對嗎?
: 做完小波轉換(尚未轉回來) 如果要看圖長什麼樣子
: 應該也是要加128再show出來對嗎?
我以前寫的.自用吧~不保證正確喔~^^|||
clear;clc;close all;
u8=imread('Body.jpg');
% Pre-rocessing
P=double(u8(:,:,3))+1-128;
[m,n]=size(P);
% Forward Intercomponent Transform => DWT: Periodic symmetric extension
a_L=sqrt(2)*[-1/8 2/8 6/8 2/8 -1/8]; % Analysis
a_H=[0 0 -1/2 1 -1/2]/sqrt(2);
s_L=[0 0 1/2 1 1/2]/sqrt(2); % Synthesis
s_H=sqrt(2)*[-1/8 -2/8 6/8 -2/8 -1/8];
[cA,cH,cV,cD] = dwt2(P,a_L,a_H);
% Quantization => lossless => step size:1
delta=1;
cA=sign(cA).*floor(abs(cA)/delta);
cH=sign(cH).*floor(abs(cH)/delta);
cV=sign(cV).*floor(abs(cV)/delta);
cD=sign(cD).*floor(abs(cD)/delta);
% Entropy Encoding => Tier-1 Encoder
% Dequantization
cA=(cA+(1/2)*sign(cA))*delta;
cH=(cH+(1/2)*sign(cH))*delta;
cV=(cV+(1/2)*sign(cV))*delta;
cD=(cD+(1/2)*sign(cD))*delta;
% IDWT
backP=idwt2(cA,cH,cV,cD,s_L,s_H);
% Backing...
backu8=uint8(round(backP(2:end,2:end))+128-1);
figure;subplot(121);imshow(u8);subplot(122);imshow(backu8);
imwrite(backu8,'backu8.bmp');
back=double(imread('backu8.bmp'))+1-128;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.135.217