All pastes #285474 Raw Edit

Stuff

public text v1 · immutable
#285474 ·published 2006-12-19 21:22 UTC
rendered paste body
/** Reconstruct the image which was Haar-transformed */
    void Image::reconstruct(const size_t& level){
    	const size_t imageHeight = this->_header.height;
    	const size_t imageWidth = this->_header.width;
    	
    	//Start settings:
    	size_t widthToTransform=imageWidth;		
    	size_t heightToTransform=imageHeight;
    	for (size_t i=1;i<level;++i){
    		widthToTransform/=2;
   			heightToTransform/=2;
    	}
    	size_t heightStart=imageHeight-heightToTransform;
    	
    	//Reconstruction in steps
    	for (size_t f=0;f<level;++f){
    		//Columns
    		for(size_t i=0;i<widthToTransform;++i){		//x-direction
    			for	(size_t j=0;j<(heightToTransform/2);++j){	//y-direction
    				int d=this->_pixels[heightStart*imageWidth+i+j*imageWidth];
    				int s=this->_pixels[heightStart*imageWidth+(heightToTransform/2)*imageWidth+i+j*imageWidth];
    				this->_pixels[heightStart*imageWidth+i+j*imageWidth]=s-d;
    				this->_pixels[heightStart*imageWidth+i+(j+1)*imageWidth]=s+d;
    			}
    		}
    		
    		//Rows
    		for(size_t i=0;i<heightToTransform;++i){ 	//y-direction
    			for	(size_t j=0;j<(widthToTransform/2);++j){	//x-direction
    				int d=this->_pixels[heightStart*imageWidth+i*imageWidth+j];
    				int s=this->_pixels[heightStart*imageWidth+i*imageWidth+(widthToTransform/2)+j];
    				this->_pixels[heightStart*imageWidth+i*imageWidth+j]=s+d;
    				this->_pixels[heightStart*imageWidth+i*imageWidth+j+1]=s-d;
    			}
    		}
    		widthToTransform*=2;
    		heightToTransform*=2;
    		heightStart=imageHeight-heightToTransform;
    	}
    }