The BOTTOM LINE Quote Of The Day

The BOTTOM LINE Quote Of The Day

Don't Ever Tell GOD How BIG Your Problems are.
Just Tell Your Problems How BIG your GOD is ;)

Tuesday, May 8, 2012

Haar Wavelet Image Compression





#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <graphics.h>
#define PI 3.14

using namespace std;

void paint(int a,int b,int value)
{
     for(int i=0;i<20;i++)
     {
          for(int j=0;j<20;j++)
             putpixel(20*a+i,20*b+j,COLOR(int(value)%255,int(value)%255,int(value)%255));
     }
}

 void haar(int imgdata[][8],int wt,int ht,int numlevel)
    {
        int htrnsr[ht][wt], htrnsc[ht][wt], htindex;
        for(int level=1;level<=numlevel ;level++)
        {
            for(int i=0;i<ht;i++)
            {
                htindex=0;
                for(int j=0;j<wt;j+=2)
                {
                    htrnsr[i][htindex]=(imgdata[i][j]+imgdata[i][j+1])/2;
                    htrnsr[i][htindex+wt/2]=imgdata[i][j]-imgdata[i][j+1];
                    htindex++;
                }
            }
            for(int i=0;i<wt;i++)
            {
                htindex=0;
                for(int j=0;j<ht;j+=2)
                {
                    htrnsc[htindex][i]=(htrnsr[j][i]+htrnsr[j+1][i])/2;
                    htrnsc[htindex+ht/2][i]=htrnsr[j][i]-htrnsr[j+1][i];
                    htindex++;
                }
            }
            for(int i=0;i<ht;i++)
                for(int j=0;j<wt;j++)
                    imgdata[i][j]=htrnsc[i][j];
            wt=wt>>1;            ht=ht>>1;
        }
    initwindow(160,160,"HWT");         cout<<"\n";
    cout<<"\n HWT IMAGE DATA \n";      
    for(int i=0;i<8;i++)
    {
        for(int j=0;j<8;j++)
        {
            paint(i,j,imgdata[i][j]);            cout<<imgdata[i][j]<<"\t";
        }
        cout<<"\n";
    }
    }
      
int main()
{
    initwindow(160,160,"INPUT");
    
    int P[8][8]={ 12,25,21,26,20,21,24,23,
                    63,59,55,90,109,85,69,72,
                    42,49,48,143,144,144,46,43,
                    13,58,71,122,154,106,90,69,
                    67,61,68,164,166,68,68,60,
                    79,35,60,70,77,68,58,75,
                    85,81,84,89,85,81,85,83,
                    87,79,69,68,65,76,78,94};

    float F[8][8];
    
    cout<<"\n INPUT IMAGE DATA \n";   
    for(int i=0;i<8;i++)
    {
        for(int j=0;j<8;j++)
        {
            paint(i,j,P[i][j]);            cout<<P[i][j]<<"\t";
        }
        cout<<"\n";
    }    
    haar(P,8,8,1);    
    while( !kbhit() ); 
    closegraph( );
    getch();
    return 0;
}


No comments:

Post a Comment