逆小波轉換 |
|
iolcst
一般會員 發表:2 回覆:2 積分:0 註冊:2006-11-10 發送簡訊給我 |
#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 tBuf2 = new unsigned char* [nHeight]; for (int i=0; i //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; } 小弟不才 請問各位大大我做的式灰階小波轉換 為何我在將影像做逆小波處理時 第一步垂直合成會變成這樣呢? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |