⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ximahist.cpp

📁 It s a tool designed to extract as much information as possible from Bluetooth devices without the r
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				yuvClr.rgbRed = (BYTE)stretcheds;				color = YUVtoRGB(yuvClr);				SetPaletteColor( (BYTE)j, color );			}		}	  }	}  }  return true;}////////////////////////////////////////////////////////////////////////////////// HistogramEqualize function by <dave> : dave(at)posortho(dot)combool CxImage::HistogramEqualize(){	if (!pDib) return false;    int histogram[256];	int map[256];	int equalize_map[256];    int x, y, i, j;	RGBQUAD color;	RGBQUAD	yuvClr;	unsigned int YVal, high, low;	memset( &histogram, 0, sizeof(int) * 256 );	memset( &map, 0, sizeof(int) * 256 );	memset( &equalize_map, 0, sizeof(int) * 256 );      // form histogram	for(y=0; y < head.biHeight; y++){		info.nProgress = (long)(50*y/head.biHeight);		if (info.nEscape) break;		for(x=0; x < head.biWidth; x++){			color = GetPixelColor( x, y );			YVal = (unsigned int)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);			histogram[YVal]++;		}	}	// integrate the histogram to get the equalization map.	j = 0;	for(i=0; i <= 255; i++){		j += histogram[i];		map[i] = j; 	}	// equalize	low = map[0];	high = map[255];	if (low == high) return false;	for( i = 0; i <= 255; i++ ){		equalize_map[i] = (unsigned int)((((double)( map[i] - low ) ) * 255) / ( high - low ) );	}	// stretch the histogram	if(head.biClrUsed == 0){ // No Palette		for( y = 0; y < head.biHeight; y++ ){			info.nProgress = (long)(50+50*y/head.biHeight);			if (info.nEscape) break;			for( x = 0; x < head.biWidth; x++ ){				color = GetPixelColor( x, y );				yuvClr = RGBtoYUV(color);                yuvClr.rgbRed = (BYTE)equalize_map[yuvClr.rgbRed];				color = YUVtoRGB(yuvClr);				SetPixelColor( x, y, color );			}		}	} else { // Palette		for( i = 0; i < (int)head.biClrUsed; i++ ){			color = GetPaletteColor((BYTE)i);			yuvClr = RGBtoYUV(color);            yuvClr.rgbRed = (BYTE)equalize_map[yuvClr.rgbRed];			color = YUVtoRGB(yuvClr);			SetPaletteColor( (BYTE)i, color );		}	}	return true;}////////////////////////////////////////////////////////////////////////////////// HistogramNormalize function by <dave> : dave(at)posortho(dot)combool CxImage::HistogramNormalize(){	if (!pDib) return false;	int histogram[256];	int threshold_intensity, intense;	int x, y, i;	unsigned int normalize_map[256];	unsigned int high, low, YVal;	RGBQUAD color;	RGBQUAD	yuvClr;	memset( &histogram, 0, sizeof( int ) * 256 );	memset( &normalize_map, 0, sizeof( unsigned int ) * 256 );      // form histogram	for(y=0; y < head.biHeight; y++){		info.nProgress = (long)(50*y/head.biHeight);		if (info.nEscape) break;		for(x=0; x < head.biWidth; x++){			color = GetPixelColor( x, y );			YVal = (unsigned int)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);			histogram[YVal]++;		}	}	// find histogram boundaries by locating the 1 percent levels	threshold_intensity = ( head.biWidth * head.biHeight) / 100;	intense = 0;	for( low = 0; low < 255; low++ ){		intense += histogram[low];		if( intense > threshold_intensity )	break;	}	intense = 0;	for( high = 255; high != 0; high--){		intense += histogram[ high ];		if( intense > threshold_intensity ) break;	}	if ( low == high ){		// Unreasonable contrast;  use zero threshold to determine boundaries.		threshold_intensity = 0;		intense = 0;		for( low = 0; low < 255; low++){			intense += histogram[low];			if( intense > threshold_intensity )	break;		}		intense = 0;		for( high = 255; high != 0; high-- ){			intense += histogram [high ];			if( intense > threshold_intensity )	break;		}	}	if( low == high ) return false;  // zero span bound	// Stretch the histogram to create the normalized image mapping.	for(i = 0; i <= 255; i++){		if ( i < (int) low ){			normalize_map[i] = 0;		} else {			if(i > (int) high)				normalize_map[i] = 255;			else				normalize_map[i] = ( 255 - 1) * ( i - low) / ( high - low );		}	}	// Normalize	if( head.biClrUsed == 0 ){		for( y = 0; y < head.biHeight; y++ ){			info.nProgress = (long)(50+50*y/head.biHeight);			if (info.nEscape) break;			for( x = 0; x < head.biWidth; x++ ){				color = GetPixelColor( x, y );				yuvClr = RGBtoYUV( color );                yuvClr.rgbRed = (BYTE)normalize_map[yuvClr.rgbRed];				color = YUVtoRGB( yuvClr );				SetPixelColor( x, y, color );			}		}	} else {		for(i = 0; i < (int)head.biClrUsed; i++){			color = GetPaletteColor( (BYTE)i );			yuvClr = RGBtoYUV( color );            yuvClr.rgbRed = (BYTE)normalize_map[yuvClr.rgbRed];			color = YUVtoRGB( yuvClr ); 			SetPaletteColor( (BYTE)i, color );		}	}	return true;}////////////////////////////////////////////////////////////////////////////////// HistogramLog function by <dave> : dave(at)posortho(dot)combool CxImage::HistogramLog(){	if (!pDib) return false;	//q(i,j) = 255/log(1 + |high|) * log(1 + |p(i,j)|);    int x, y, i;	RGBQUAD color;	RGBQUAD	yuvClr;	unsigned int YVal, high = 1;    // Find Highest Luminance Value in the Image	if( head.biClrUsed == 0 ){ // No Palette		for(y=0; y < head.biHeight; y++){			info.nProgress = (long)(50*y/head.biHeight);			if (info.nEscape) break;			for(x=0; x < head.biWidth; x++){				color = GetPixelColor( x, y );				YVal = (unsigned int)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);				if (YVal > high ) high = YVal;			}		}	} else { // Palette		for(i = 0; i < (int)head.biClrUsed; i++){			color = GetPaletteColor((BYTE)i);			YVal = (unsigned int)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);			if (YVal > high ) high = YVal;		}	}	// Logarithm Operator	double k = 255.0 / ::log( 1.0 + (double)high );	if( head.biClrUsed == 0 ){		for( y = 0; y < head.biHeight; y++ ){			info.nProgress = (long)(50+50*y/head.biHeight);			if (info.nEscape) break;			for( x = 0; x < head.biWidth; x++ ){				color = GetPixelColor( x, y );				yuvClr = RGBtoYUV( color );                				yuvClr.rgbRed = (BYTE)(k * ::log( 1.0 + (double)yuvClr.rgbRed ) );				color = YUVtoRGB( yuvClr );				SetPixelColor( x, y, color );			}		}	} else {		for(i = 0; i < (int)head.biClrUsed; i++){			color = GetPaletteColor( (BYTE)i );			yuvClr = RGBtoYUV( color );            yuvClr.rgbRed = (BYTE)(k * ::log( 1.0 + (double)yuvClr.rgbRed ) );						color = YUVtoRGB( yuvClr ); 			SetPaletteColor( (BYTE)i, color );		}	} 	return true;}////////////////////////////////////////////////////////////////////////////////// HistogramRoot function by <dave> : dave(at)posortho(dot)combool CxImage::HistogramRoot(){	if (!pDib) return false;	//q(i,j) = sqrt(|p(i,j)|);    int x, y, i;	RGBQUAD color;	RGBQUAD	 yuvClr;	double	dtmp;	unsigned int YVal, high = 1;     // Find Highest Luminance Value in the Image	if( head.biClrUsed == 0 ){ // No Palette		for(y=0; y < head.biHeight; y++){			info.nProgress = (long)(50*y/head.biHeight);			if (info.nEscape) break;			for(x=0; x < head.biWidth; x++){				color = GetPixelColor( x, y );				YVal = (unsigned int)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);				if (YVal > high ) high = YVal;			}		}	} else { // Palette		for(i = 0; i < (int)head.biClrUsed; i++){			color = GetPaletteColor((BYTE)i);			YVal = (unsigned int)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);			if (YVal > high ) high = YVal;		}	}	// Root Operator	double k = 128.0 / ::log( 1.0 + (double)high );	if( head.biClrUsed == 0 ){		for( y = 0; y < head.biHeight; y++ ){			info.nProgress = (long)(50+50*y/head.biHeight);			if (info.nEscape) break;			for( x = 0; x < head.biWidth; x++ ){				color = GetPixelColor( x, y );				yuvClr = RGBtoYUV( color );				dtmp = k * ::sqrt( (double)yuvClr.rgbRed );				if ( dtmp > 255.0 )	dtmp = 255.0;				if ( dtmp < 0 )	dtmp = 0;                yuvClr.rgbRed = (BYTE)dtmp;				color = YUVtoRGB( yuvClr );				SetPixelColor( x, y, color );			}		}	} else {		for(i = 0; i < (int)head.biClrUsed; i++){			color = GetPaletteColor( (BYTE)i );			yuvClr = RGBtoYUV( color );			dtmp = k * ::sqrt( (double)yuvClr.rgbRed );			if ( dtmp > 255.0 )	dtmp = 255.0;			if ( dtmp < 0 ) dtmp = 0;            yuvClr.rgbRed = (BYTE)dtmp;			color = YUVtoRGB( yuvClr ); 			SetPaletteColor( (BYTE)i, color );		}	} 	return true;}////////////////////////////////////////////////////////////////////////////////#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -