All pastes #285517 Raw Edit

Miscellany

public text v1 · immutable
#285517 ·published 2006-12-19 21:49 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+2*j*imageWidth]=s-d;
    				this->_pixels[heightStart*imageWidth+i+(2*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+2*j]=s+d;
    				this->_pixels[heightStart*imageWidth+i*imageWidth+2*j+1]=s-d;
    			}
    		}
    		widthToTransform*=2;
    		heightToTransform*=2;
    		heightStart=imageHeight-heightToTransform;
    	}
    }