線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1288
推到 Plurk!
推到 Facebook!

逆小波轉換

 
iolcst
一般會員


發表:2
回覆:2
積分:0
註冊:2006-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-11-21 15:29:50 IP:220.141.xxx.xxx 未訂閱
#include "stdafx.h"
#include
#include
#include <math.h><br /> using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
fstream pFileOpen;
fstream pFileSave;
fstream pFileSave2;
int nWidth;
int nHeight;
unsigned char* pBuf;
unsigned char* rBuf;
unsigned char** tBuf;
unsigned char** tBuf2;

unsigned char TMPBUF[1088];
//Open/Creat BMP File.
pFileOpen.open("c:\\test.bmp", ios::in|ios::binary);
pFileSave.open("c:\\save.bmp", ios::out|ios::binary);
pFileSave2.open("c:\\save2.bmp", ios::out|ios::binary);
//Read BMP File Head
pFileOpen.read((char *)TMPBUF,1088);
pFileSave.write((char *)TMPBUF,1088);
pFileSave2.write((char *)TMPBUF,1088);

//Get BMP Height & Width
nWidth=(unsigned short)TMPBUF[19]*256 TMPBUF[18];
nHeight=(unsigned short)TMPBUF[23]*256 TMPBUF[22];
//Creat a trasform buf
tBuf = new unsigned char* [nHeight];
for (int i=0; i tBuf[i]= new unsigned char [nWidth];
tBuf2 = new unsigned char* [nHeight];
for (int i=0; i tBuf2[i]= new unsigned char [nWidth];
//Create read buffer.
pBuf=new unsigned char[nWidth*nHeight*3];
memset(pBuf,0,nWidth*nHeight*3);
rBuf=new unsigned char[nWidth*nHeight*3];
memset(rBuf,0,nWidth*nHeight*3);

//Jump to image data start.
pFileOpen.seekg(1078,ios::beg);
pFileSave.seekp(1078,ios::beg);
pFileSave2.seekp(1078,ios::beg);

//Read image to buffer from file.
pFileOpen.read((char *)pBuf,(nWidth*nHeight*3));

int i=0;
int l=0;
int j,k=0;
for (j=nHeight-1; j>=0;j--)
{
for (k=0 ; k {
tBuf[j][k]=pBuf[i];
i ;
};

//水平小波轉換
for ( j=0 ; j {
for (k=0 ; k {
tBuf2[j][k]=(tBuf[j][2*k] tBuf[j][2*k 1])/2;
tBuf2[j][k nWidth/2]=(tBuf[j][2*k]-tBuf[j][2*k 1])/2;
};
};
//system("pause");
//垂直水波轉換
for ( j=0 ; j {
for (k=0 ; k {
tBuf[k][j]=(tBuf2[2*k][j] tBuf2[2*k 1][j])/2;
tBuf[k nHeight/2][j]=(tBuf2[2*k][j]-tBuf2[2*k 1][j])/2;
};
};

int g=0;
for (j=nHeight-1; j>=0;j--)
{
for (k=0; k {
pBuf[g]=tBuf[j][k];
g ;
};
};
pFileSave.write((char *)pBuf,(nWidth*nHeight));
//************************************************************//
//*逆向水波合成*

////*垂直水波合成*
for ( j=0 ; j {
for (k=0 ; k {
tBuf2[k][j]=(tBuf[k/2][j] tBuf[k/2 nHeight/2][j])/2;
tBuf2[k 1][j]=(tBuf[k/2][j]-tBuf[k/2 nHeight/2][j])/2;
};
};

//*水平水波合成*
for ( j=0 ; j {
for ( k=0 ; k {
tBuf[j][k]=(tBuf2[j][k/2] tBuf[j][k/2 nWidth/2])/2;
tBuf[j][k 1]=(tBuf2[j][k/2]-tBuf[j][k/2 nWidth/2])/2;
};

};

g=0;
for (j=nHeight-1; j>=0;j--)
{
for (k=0; k {
rBuf[g]=tBuf2[j][k];
g ;
};
};
pFileSave2.write((char *)rBuf,(nWidth*nHeight*3));

pFileOpen.close();
pFileSave.close();
pFileSave2.close();

return 0;

}


小弟不才
請問各位大大我做的式灰階小波轉換
為何我在將影像做逆小波處理時
第一步垂直合成會變成這樣呢?
附加檔案:4562aaee6d313_save2.bmp
系統時間:2024-05-09 1:25:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!