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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? restore.cpp

?? 影像處理程序 基本的影像處理算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// ************************************************************************
//  文件名:restore.cpp
//
//  圖像復(fù)原API函數(shù)庫:
//
//  BlurDIB()			- 圖像模糊
//  InverseDIB()	    - 圖像逆濾波
//  NoiseBlurDIB()		- 圖像模糊加噪
//  WienerDIB()			- 圖像維納濾波
//	RandomNoiseDIB()	- 圖像中加入隨機(jī)噪聲
//	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

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

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

	//像素值
	unsigned char pixel;

	// 圖像每行的字節(jié)數(shù)
	LONG lLineBytes;

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

	// 計(jì)算圖像每行的字節(jié)數(shù)
	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++)
		{
			// 指向源圖像倒數(shù)第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;
		}
	}

	//對源圖像進(jìn)行FFT
	fourn(fftSrc,nn,2,1);
	//對卷積核圖像進(jìn)行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];
	}

	//對結(jié)果圖像進(jìn)行反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];
		}
	}
	
	//轉(zhuǎn)換為圖像
	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			// 指向源圖像倒數(shù)第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;
}

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

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

	//像素值
	unsigned char pixel;

	// 圖像每行的字節(jié)數(shù)
	LONG lLineBytes;

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

	// 計(jì)算圖像每行的字節(jié)數(shù)
	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++)
		{
			// 指向源圖像倒數(shù)第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;
		}
	}

	//對源圖像進(jìn)行FFT
	fourn(fftSrc,nn,2,1);
	//對卷積核圖像進(jìn)行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 );
			}
		}
	}

	//對結(jié)果圖像進(jìn)行反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];
		}
	}
	

	//轉(zhuǎn)換為圖像
	for (j = 0;j < lHeight ;j++)
	{
		for(i = 0;i < lLineBytes ;i++)
		{
			// 指向源圖像倒數(shù)第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;
}

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

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

	//像素值
	unsigned char pixel;

	// 圖像每行的字節(jié)數(shù)
	LONG lLineBytes;

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

	// 計(jì)算圖像每行的字節(jié)數(shù)
	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++)
		{
			// 指向源圖像倒數(shù)第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;
		}
	}

	//對源圖像進(jìn)行FFT
	fourn(fftSrc,nn,2,1);
	//對卷積核圖像進(jìn)行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];
	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲影视资源网| 国产91精品一区二区麻豆网站| 国产a视频精品免费观看| 精品对白一区国产伦| 免费成人性网站| 欧美大胆一级视频| 国产精品一区二区三区网站| 国产精品一区二区三区99| 风间由美一区二区av101| 欧美精品在线一区二区三区| 国产精品另类一区| 精品一区二区免费在线观看| 国产精品三级视频| 麻豆久久一区二区| 色老汉一区二区三区| 成人h版在线观看| 在线亚洲高清视频| 精品国产一区久久| 成人免费一区二区三区视频 | 91久久一区二区| 日韩欧美国产一区在线观看| 国产精品美女久久久久久久久久久| 成人免费在线观看入口| 日本特黄久久久高潮| 日韩欧美不卡在线观看视频| 国产白丝网站精品污在线入口| 中文字幕乱码亚洲精品一区| 日韩av中文字幕一区二区三区| 久久久综合激的五月天| 久久久久久麻豆| 视频一区中文字幕| 欧美aaa在线| 久久电影网站中文字幕| 日韩欧美国产综合| 日韩免费高清视频| 亚洲欧美怡红院| 国产真实精品久久二三区| 国产精品电影一区二区| 高清在线不卡av| 亚洲色图.com| 欧美怡红院视频| 亚洲青青青在线视频| 欧美日韩不卡一区二区| 国产综合一区二区| 日韩三级电影网址| 国产v日产∨综合v精品视频| 亚洲v中文字幕| 国产欧美一区二区精品仙草咪| 欧美视频一区二区| 成人国产精品免费网站| 美女视频黄免费的久久 | 色综合久久久久综合99| 麻豆成人91精品二区三区| 亚洲免费资源在线播放| 久久久久久久综合| 欧美精品久久一区二区三区| 色偷偷一区二区三区| 国产成人在线视频免费播放| 日韩国产在线观看| 亚洲最大色网站| 综合欧美亚洲日本| 国产精品久久久久国产精品日日| 久久众筹精品私拍模特| 69久久99精品久久久久婷婷| 色偷偷88欧美精品久久久| 国产精品亚洲人在线观看| 另类人妖一区二区av| 五月天欧美精品| 亚洲综合区在线| 亚洲黄色尤物视频| 自拍偷拍亚洲欧美日韩| 国产精品美女久久久久aⅴ国产馆| 久久男人中文字幕资源站| 日韩欧美视频一区| 日韩一区二区三区观看| 欧美浪妇xxxx高跟鞋交| 欧美久久高跟鞋激| 欧美肥妇free| 欧美一区二区三区小说| 日韩视频一区二区| 日韩欧美视频一区| 久久九九国产精品| 国产精品污网站| 中文字幕一区二区三区四区不卡 | 91丨porny丨最新| 99re热这里只有精品视频| 成人精品视频一区二区三区| 不卡的av在线| 日本乱码高清不卡字幕| 色婷婷综合久久久中文一区二区| 色哟哟一区二区在线观看| 91成人免费电影| 欧美日韩一二三| 91精品国产综合久久精品图片| 日韩女同互慰一区二区| 国产片一区二区三区| 国产精品国产三级国产普通话三级| 国产精品丝袜久久久久久app| 国产精品成人免费在线| 亚洲免费在线电影| 午夜亚洲国产au精品一区二区 | 极品美女销魂一区二区三区| 国内精品视频一区二区三区八戒| 国产成人亚洲精品青草天美| 99麻豆久久久国产精品免费| 色妹子一区二区| 在线播放日韩导航| 久久只精品国产| 一区二区三区国产精华| 日本不卡一区二区| 成人毛片视频在线观看| 欧美午夜寂寞影院| 久久欧美一区二区| 一区二区三区av电影| 美女一区二区视频| 成人激情电影免费在线观看| 欧美日韩日日骚| 2017欧美狠狠色| 亚洲一区二区影院| 国产精品99久| 欧美日韩卡一卡二| 国产午夜三级一区二区三| 亚洲免费视频中文字幕| 国产综合久久久久久鬼色| 91网站在线观看视频| 精品欧美乱码久久久久久1区2区| ㊣最新国产の精品bt伙计久久| 三级不卡在线观看| 成人午夜在线视频| 91精品欧美一区二区三区综合在| 中文字幕久久午夜不卡| 石原莉奈一区二区三区在线观看| 成人污污视频在线观看| 欧美日韩情趣电影| 国产精品国产三级国产aⅴ入口 | 国产精品主播直播| 欧美婷婷六月丁香综合色| 久久精品亚洲乱码伦伦中文| 亚洲成在人线在线播放| www.66久久| 久久青草欧美一区二区三区| 日韩精彩视频在线观看| 色综合色狠狠综合色| 久久综合九色综合97婷婷 | 在线播放91灌醉迷j高跟美女 | 久久精品一区二区| 日本成人在线网站| 欧美性猛交xxxx乱大交退制版| 中日韩免费视频中文字幕| 国产最新精品精品你懂的| 日韩一区二区视频在线观看| 亚洲一区中文日韩| 成人短视频下载| 国产日韩精品一区二区三区| 国内外成人在线视频| 日韩午夜精品视频| 奇米777欧美一区二区| 欧美日韩精品免费| 亚洲电影一区二区三区| 91一区二区三区在线观看| 国产精品进线69影院| 国产ts人妖一区二区| 国产日韩欧美综合一区| 狠狠色狠狠色综合| 精品对白一区国产伦| 极品少妇一区二区三区精品视频| 日韩三级在线观看| 日本不卡视频在线| 日韩三级电影网址| 久久精品二区亚洲w码| 日韩三级视频中文字幕| 五月激情综合网| 91精品国产91热久久久做人人| 天天综合天天做天天综合| 欧美二区三区91| 日韩成人免费电影| 日韩视频在线永久播放| 国产又黄又大久久| 中文字幕国产一区二区| 成人精品电影在线观看| 国产精品视频在线看| 色婷婷久久综合| 一区二区三区四区蜜桃| 欧美久久久一区| 国内精品在线播放| 国产精品―色哟哟| 在线一区二区视频| 日韩电影在线观看一区| 日韩欧美电影在线| 国产精品一品视频| 1024国产精品| 欧美日韩国产另类不卡| 精品亚洲成av人在线观看| 国产欧美一区二区精品性色| 99视频有精品| 无码av免费一区二区三区试看| 精品欧美一区二区在线观看| 成人爱爱电影网址| 亚洲一区自拍偷拍| 久久影院视频免费|