亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? restore.cpp

?? 影像處理程序 基本的影像處理算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// ************************************************************************
//  文件名:restore.cpp
//
//  圖像復原API函數庫:
//
//  BlurDIB()			- 圖像模糊
//  InverseDIB()	    - 圖像逆濾波
//  NoiseBlurDIB()		- 圖像模糊加噪
//  WienerDIB()			- 圖像維納濾波
//	RandomNoiseDIB()	- 圖像中加入隨機噪聲
//	SaltNoiseDIB()		- 圖像中加入椒鹽噪聲
//  fourn()				- n維FFT
//
// *************************************************************************

#include "stdafx.h"
#include "restore.h"
#include "DIBAPI.h"

#include <math.h>
#include <direct.h>

#define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr

/*************************************************************************
 *
 * 函數名稱:
 *   BlurDIB()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數,必須是4的倍數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *
 * 返回值:
 *   BOOL               - 平移成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對DIB圖像進行模糊操作。
 *
 ************************************************************************/

BOOL WINAPI BlurDIB (LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	// 指向源圖像的指針
	LPSTR	lpSrc;
	
	//循環變量
	long i;
	long j;

	//像素值
	unsigned char pixel;

	// 圖像每行的字節數
	LONG lLineBytes;

	//用于做FFT的數組
	double *fftSrc,*fftKernel;
	//二維FFT的長度和寬度
	unsigned long nn[3];
	//圖像歸一化因子
	double MaxNum;

	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);

	double dPower = log((double)lLineBytes)/log(2.0);
	if(dPower != (int) dPower)
	{
		return false;
	}
	dPower = log((double)lHeight)/log(2.0);
	if(dPower != (int) dPower)
	{
		return false;
	}

	fftSrc = new double [lHeight*lLineBytes*2+1];
	fftKernel = new double [lHeight*lLineBytes*2+1];

	nn[1] = lHeight;
	nn[2] = lLineBytes;

	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			// 指向源圖像倒數第j行,第i個象素的指針			
			lpSrc = (char *)lpDIBBits + lLineBytes * j + i;
	
			pixel = (unsigned char)*lpSrc;

			fftSrc[(2*lLineBytes)*j + 2*i + 1] = (double)pixel;
			fftSrc[(2*lLineBytes)*j + 2*i + 2] = 0.0;
	
			if(i < 5 && j < 5)
			{
				fftKernel[(2*lLineBytes)*j + 2*i + 1] = 1/25.0;
			}
			else
			{
				fftKernel[(2*lLineBytes)*j + 2*i + 1] = 0.0;
			}
			fftKernel[(2*lLineBytes)*j + 2*i + 2] = 0.0;
		}
	}

	//對源圖像進行FFT
	fourn(fftSrc,nn,2,1);
	//對卷積核圖像進行FFT
	fourn(fftKernel,nn,2,1);

	//頻域相乘
	for (i = 1;i <lHeight*lLineBytes*2;i+=2)
	{
		fftSrc[i] = fftSrc[i] * fftKernel[i] - fftSrc[i+1] * fftKernel[i+1];
		fftSrc[i+1] = fftSrc[i] * fftKernel[i+1] + fftSrc[i+1] * fftKernel[i];
	}

	//對結果圖像進行反FFT
	fourn(fftSrc,nn,2,-1);

	//確定歸一化因子
	MaxNum = 0.0;
	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			fftSrc[(2*lLineBytes)*j + 2*i + 1] = 
				sqrt(fftSrc[(2*lLineBytes)*j + 2*i + 1] * fftSrc[(2*lLineBytes)*j + 2*i + 1]\
						+fftSrc[(2*lLineBytes)*j + 2*i + 2] * fftSrc[(2*lLineBytes)*j + 2*i + 2]);
			if( MaxNum < fftSrc[(2*lLineBytes)*j + 2*i + 1])
				MaxNum = fftSrc[(2*lLineBytes)*j + 2*i + 1];
		}
	}
	
	//轉換為圖像
	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			// 指向源圖像倒數第j行,第i個象素的指針			
			lpSrc = (char *)lpDIBBits + lLineBytes * j + i;
	
			*lpSrc = (unsigned char) (fftSrc[(2*lLineBytes)*j + 2*i + 1]*255.0/MaxNum);
		}
	}
	delete fftSrc;
	delete fftKernel;
	// 返回
	return true;
}

/*************************************************************************
 *
 * 函數名稱:
 *   RestoreDIB()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數,必須是4的倍數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *
 * 返回值:
 *   BOOL               - 平移成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對BlurDIB()生成的DIB圖像進行復原操作。
 *
 ************************************************************************/

BOOL WINAPI RestoreDIB (LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	// 指向源圖像的指針
	LPSTR	lpSrc;
	
	//循環變量
	long i;
	long j;

	//像素值
	unsigned char pixel;

	// 圖像每行的字節數
	LONG lLineBytes;

	//用于做FFT的數組
	double *fftSrc,*fftKernel;
	double a,b,c,d;
	//二維FFT的長度和寬度
	unsigned long nn[3];
	//圖像歸一化因子
	double MaxNum;

	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);

	double dPower = log((double)lLineBytes)/log(2.0);
	if(dPower != (int) dPower)
	{
		return false;
	}
	dPower = log((double)lHeight)/log(2.0);
	if(dPower != (int) dPower)
	{
		return false;
	}

	fftSrc = new double [lHeight*lLineBytes*2+1];
	fftKernel = new double [lHeight*lLineBytes*2+1];

	nn[1] = lHeight;
	nn[2] = lLineBytes;

	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			// 指向源圖像倒數第j行,第i個象素的指針			
			lpSrc = (char *)lpDIBBits + lLineBytes * j + i;
	
			pixel = (unsigned char)*lpSrc;

			fftSrc[(2*lLineBytes)*j + 2*i + 1] = (double)pixel;
			fftSrc[(2*lLineBytes)*j + 2*i + 2] = 0.0;
	
			if(i < 5 && j == 0)
			{
				fftKernel[(2*lLineBytes)*j + 2*i + 1] = 1/5.0;
			}
			else
			{
				fftKernel[(2*lLineBytes)*j + 2*i + 1] = 0.0;
			}
			fftKernel[(2*lLineBytes)*j + 2*i + 2] = 0.0;
		}
	}

	//對源圖像進行FFT
	fourn(fftSrc,nn,2,1);
	//對卷積核圖像進行FFT
	fourn(fftKernel,nn,2,1);

	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			a = fftSrc[(2*lLineBytes)*j + 2*i + 1];
			b = fftSrc[(2*lLineBytes)*j + 2*i + 2];
			c = fftKernel[(2*lLineBytes)*j + 2*i + 1];
			d = fftKernel[(2*lLineBytes)*j + 2*i + 2];
			if (c*c + d*d > 1e-3)
			{
				fftSrc[(2*lLineBytes)*j + 2*i + 1] = ( a*c + b*d ) / ( c*c + d*d );
				fftSrc[(2*lLineBytes)*j + 2*i + 2] = ( b*c - a*d ) / ( c*c + d*d );
			}
		}
	}

	//對結果圖像進行反FFT
	fourn(fftSrc,nn,2,-1);

	//確定歸一化因子
	MaxNum = 0.0;
	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			fftSrc[(2*lLineBytes)*j + 2*i + 1] = 
				sqrt(fftSrc[(2*lLineBytes)*j + 2*i + 1] * fftSrc[(2*lLineBytes)*j + 2*i + 1]\
						+fftSrc[(2*lLineBytes)*j + 2*i + 2] * fftSrc[(2*lLineBytes)*j + 2*i + 2]);
			if( MaxNum < fftSrc[(2*lLineBytes)*j + 2*i + 1])
				MaxNum = fftSrc[(2*lLineBytes)*j + 2*i + 1];
		}
	}
	

	//轉換為圖像
	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			// 指向源圖像倒數第j行,第i個象素的指針			
			lpSrc = (char *)lpDIBBits + lLineBytes * j + i;

			*lpSrc = (unsigned char) (fftSrc[(2*lLineBytes)*j + 2*i + 1]*255.0/MaxNum);
		}
	}
	delete fftSrc;
	delete fftKernel;
	// 返回
	return true;
}

/*************************************************************************
 *
 * 函數名稱:
 *   NoiseBlurDIB()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *
 * 返回值:
 *   BOOL               - 模糊加噪操作成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對DIB圖像進行模糊加噪操作。
 *
 ************************************************************************/

BOOL WINAPI NoiseBlurDIB (LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	// 指向源圖像的指針
	LPSTR	lpSrc;
	
	//循環變量
	long i;
	long j;

	//像素值
	unsigned char pixel;

	// 圖像每行的字節數
	LONG lLineBytes;

	//用于做FFT的數組
	double *fftSrc,*fftKernel;
	//二維FFT的長度和寬度
	unsigned long nn[3];
	//圖像歸一化因子
	double MaxNum;

	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);

	double dPower = log((double)lLineBytes)/log(2.0);
	if(dPower != (int) dPower)
	{
		return false;
	}
	dPower = log((double)lHeight)/log(2.0);
	if(dPower != (int) dPower)
	{
		return false;
	}

	fftSrc = new double [lHeight*lLineBytes*2+1];
	fftKernel = new double [lHeight*lLineBytes*2+1];

	nn[1] = lHeight;
	nn[2] = lLineBytes;

	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			// 指向源圖像倒數第j行,第i個象素的指針			
			lpSrc = (char *)lpDIBBits + lLineBytes * j + i;
	
			pixel = (unsigned char)*lpSrc;

			fftSrc[(2*lLineBytes)*j + 2*i + 1] = (double)pixel;
			fftSrc[(2*lLineBytes)*j + 2*i + 2] = 0.0;
	
			if(i < 5 && j == 0)
			{
				fftKernel[(2*lLineBytes)*j + 2*i + 1] = 1/5.0;
			}
			else
			{
				fftKernel[(2*lLineBytes)*j + 2*i + 1] = 0.0;
			}
			fftKernel[(2*lLineBytes)*j + 2*i + 2] = 0.0;
		}
	}

	//對源圖像進行FFT
	fourn(fftSrc,nn,2,1);
	//對卷積核圖像進行FFT
	fourn(fftKernel,nn,2,1);

	//頻域相乘
	for (i = 1;i <lHeight*lLineBytes*2;i+=2)
	{
		fftSrc[i] = fftSrc[i] * fftKernel[i] - fftSrc[i+1] * fftKernel[i+1];
		fftSrc[i+1] = fftSrc[i] * fftKernel[i+1] + fftSrc[i+1] * fftKernel[i];
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线观看免费视频播放| 精品国产乱码久久久久久蜜臀 | 884aa四虎影成人精品一区| 亚洲欧美日韩一区| 99国内精品久久| 日韩伦理电影网| 91成人免费在线视频| 亚洲综合丁香婷婷六月香| 色综合天天做天天爱| 一级中文字幕一区二区| 欧美三级乱人伦电影| 日韩av电影免费观看高清完整版 | 日本一区二区视频在线| 国产91在线观看| 亚洲色图在线播放| 欧美挠脚心视频网站| 麻豆91精品91久久久的内涵| 久久久亚洲午夜电影| 91年精品国产| 丝袜美腿亚洲综合| 26uuu另类欧美| 99视频在线观看一区三区| 亚洲福利视频一区二区| 精品盗摄一区二区三区| 成人精品高清在线| 亚洲成av人综合在线观看| 日韩精品一区二区在线| 99re成人精品视频| 调教+趴+乳夹+国产+精品| 欧美大尺度电影在线| 99视频超级精品| 天堂成人国产精品一区| 国产人伦精品一区二区| 欧美日韩午夜影院| 国产麻豆9l精品三级站| 一区二区三区鲁丝不卡| 久久人人97超碰com| 欧亚洲嫩模精品一区三区| 精品亚洲aⅴ乱码一区二区三区| 综合分类小说区另类春色亚洲小说欧美 | 视频在线观看国产精品| 国产精品久久久久影院色老大 | 91麻豆精品国产91久久久资源速度| 精品一区精品二区高清| 亚洲日本成人在线观看| 欧美成人高清电影在线| 欧美日韩一区二区三区在线看| 国产精品2024| 日韩成人免费在线| 亚洲欧美日韩国产手机在线 | 久久久99精品久久| 欧美午夜不卡在线观看免费| 国产成人精品免费网站| 日韩av不卡一区二区| 亚洲乱码国产乱码精品精的特点| 2023国产精品| 欧美美女视频在线观看| 99v久久综合狠狠综合久久| 精品在线观看视频| 日本中文字幕不卡| 亚洲一区二区三区在线看| 久久精品欧美日韩精品| 日韩手机在线导航| 欧美肥大bbwbbw高潮| 日本道免费精品一区二区三区| 国产成人高清在线| 精品一区二区综合| 免费的国产精品| 性感美女久久精品| 一区二区三区日韩精品| 日韩理论在线观看| 亚洲国产成人自拍| 欧美国产精品中文字幕| 精品美女一区二区| 欧美电视剧在线看免费| 欧美一区二区久久| 91精品国产色综合久久不卡电影| 欧美午夜片在线看| 欧美日韩另类一区| 欧美中文字幕一区二区三区亚洲| 97精品久久久午夜一区二区三区| 粉嫩av一区二区三区在线播放| 免费在线成人网| 麻豆国产欧美日韩综合精品二区| 美女视频黄久久| 韩国毛片一区二区三区| 激情伊人五月天久久综合| 久久99精品国产麻豆婷婷| 美女www一区二区| 精品一区二区免费| 黄色资源网久久资源365| 国产精品18久久久久久久久久久久 | 一本久道久久综合中文字幕| 99riav久久精品riav| 在线精品视频一区二区三四| 91网址在线看| 欧美性感一类影片在线播放| 欧美日韩久久久久久| 91精品欧美一区二区三区综合在| 欧美一区欧美二区| 精品国产一区a| 国产精品色婷婷久久58| 亚洲精品国产高清久久伦理二区| 天堂一区二区在线| 天天做天天摸天天爽国产一区| 美脚の诱脚舐め脚责91| 国产成人综合精品三级| 99久精品国产| 欧美一区二区三区日韩视频| 337p粉嫩大胆色噜噜噜噜亚洲| 中文一区在线播放| 亚洲一区在线免费观看| 麻豆精品在线看| www.久久精品| 欧美日韩国产综合久久| 2020国产精品自拍| 亚洲精品成人a在线观看| 蜜桃视频在线观看一区二区| 成人午夜碰碰视频| 欧美亚日韩国产aⅴ精品中极品| 日韩欧美激情在线| 日韩毛片精品高清免费| 男人的天堂亚洲一区| 成人小视频免费在线观看| 欧美日韩一区二区三区在线| 久久久久久久久久久久久久久99| 一个色妞综合视频在线观看| 加勒比av一区二区| 在线视频观看一区| 国产日韩精品视频一区| 亚洲与欧洲av电影| 国产成人综合精品三级| 在线不卡的av| 69久久夜色精品国产69蝌蚪网| 热久久久久久久| 久久久久国产成人精品亚洲午夜| 久久国产日韩欧美精品| 99久久er热在这里只有精品15| 欧美精选在线播放| 国产精品成人免费精品自在线观看| 天天综合网 天天综合色| 丰满少妇在线播放bd日韩电影| 欧美一区二区三区四区高清| 《视频一区视频二区| 狠狠狠色丁香婷婷综合激情 | 久久久99精品免费观看| 日本网站在线观看一区二区三区| 99这里都是精品| 国产三级三级三级精品8ⅰ区| 日韩av在线发布| 精品视频免费看| 亚洲精品成a人| 欧美午夜精品免费| 国产精品毛片无遮挡高清| 精品亚洲国内自在自线福利| 在线播放国产精品二区一二区四区| 亚洲图片另类小说| 成人黄色av电影| 久久久久久久精| 另类小说视频一区二区| 制服丝袜在线91| 亚洲一区二区综合| 欧美亚洲丝袜传媒另类| 亚洲日本青草视频在线怡红院 | 91在线一区二区三区| 国产亚洲欧美日韩俺去了| 麻豆成人免费电影| 日韩欧美一区二区久久婷婷| 美洲天堂一区二卡三卡四卡视频 | 欧美激情综合网| 国产自产v一区二区三区c| 精品国产网站在线观看| 美女视频黄 久久| 欧美成人三级电影在线| 老色鬼精品视频在线观看播放| 91精品国产欧美日韩| 日韩精品福利网| 欧美一区二区三区免费大片| 免费xxxx性欧美18vr| 欧美一区二区精品| 久久99久久久欧美国产| 精品毛片乱码1区2区3区| 国产乱码精品一品二品| 国产视频在线观看一区二区三区 | 中文字幕欧美一| 99久久免费精品高清特色大片| 中文字幕va一区二区三区| 成人av在线一区二区| 亚洲精品美国一| 欧美三级电影一区| 天天综合色天天综合色h| 日韩一区二区在线看| 国产一区欧美日韩| 国产精品午夜在线观看| jizzjizzjizz欧美| 亚洲一区在线播放| 日韩一级精品视频在线观看| 国产美女在线观看一区| 中文字幕一区二区三区视频 | 99久精品国产|