小波轉換程式片斷問題 |
缺席
|
cceCKF
一般會員 發表:13 回覆:13 積分:5 註冊:2004-04-05 發送簡訊給我 |
我要對影像做小波轉換處理, Divide_Img將影像像素取出並儲存至blocks陣列中, 然後再對其做運算..
奇怪的是寫入haarbook時檔案容量一直增加, 而且計算結果都是50, 不知道哪邊出了問題@@ 請各位大大提示, 謝謝 <textarea class="cpp" rows="10" cols="60" name="code">
void TForm1::Divide_Img(float *ptr)
{
PhoHeight = Form2->Image1->Picture->Height;
PhoWidth = Form2->Image1->Picture->Width;
float *temp = ptr;
int x, y;
//將一張512*512的圖片分割成64*64個8*8的blocks
FILE *SavePixel;
SavePixel = fopen("codeword.txt", "w"); //整理儲存至neurous struct
for(int i = 0; i < 64; i ) {
x = 0;
for (int m = 0; m < 8; m ) {
x = m;
x = i * 8;
for(int j = 0; j < 64; j ) {
y = 0;
for(int n = 0; n < 8; n ) {
y = n;
y = j * 8;
fprintf(SavePixel, "%6.0f", *(temp (x * 2) * PhoWidth y));
neurous.blocks[i][j][m][n] = *(temp (x * 2) * PhoWidth y);
}
}
fprintf(SavePixel, "\n");
}
}
fclose(SavePixel);
} ..... /*小波轉換*/
float idx_L[64][64][8][8], idx_H[64][64][8][8];
int x, y;
//將codeword經過haar來轉換
FILE *SavePixel;
SavePixel = fopen("haarbook.txt", "w"); //水平分割
for(int i = 0; i < 64; i ) {
for (int m = 0; m < 8; m ) {
for(int j = 0; j < 64; j ) {
x = 0, y = 0;
for(int n = 0; n < 8; n 2) {
idx_L[i][j][m][x] = (neurous.blocks[i][j][m][n] neurous.blocks[i][j][m][n 1]) / 2;
neurous.blocks[i][j][m][x] = idx_L[i][j][m][x];
//idx_H[i][j][m][y] = (neurous.blocks[i][j][m][n] - neurous.blocks[i][j][m][n 1]) / 2;
//neurous.blocks[i][j][m][y 4] = idx_H[i][j][m][y];
fprintf(SavePixel, "%6.0f", neurous.blocks[i][j][m][x]);
//fprintf(SavePixel, "%6.0f", neurous.blocks[i][j][m][y]);
x = 1;
//y = 1;
}
}
fprintf(SavePixel, "\n");
}
}
/*
//垂直分割
for(int j = 0; j < 64; j ) {
for (int n = 0; n < 8; n ) {
for(int i = 0; i < 64; i ) {
x = 0, y = 4;
for(int m = 0; m < 8; m 2) {
idx_L[i][j][x][n] = (neurous.blocks[i][j][m][n] neurous.blocks[i][j][m 1][n]) / 2;
idx_H[i][j][y][n] = (neurous.blocks[i][j][m][n] - neurous.blocks[i][j][m 1][n]) / 2;
neurous.blocks[i][j][x][n] = idx_L[i][j][x][n];
neurous.blocks[i][j][y][n] = idx_H[i][j][y][n];
fprintf(SavePixel, "%6.0f", neurous.blocks[i][j][x][n]);
fprintf(SavePixel, "%6.0f", neurous.blocks[i][j][y][n]);
x = 1;
y = 1;
}
}
fprintf(SavePixel, "\n");
}
}
*/
fclose(SavePixel);
}
</textarea>
------
我想多學一點 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |