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

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

?? pointtrans.cpp

?? 《VC++數字圖像處理》人民郵電大學出版社 何斌 馬天予 王遠堅 朱紅蓮
?? CPP
字號:

/**************************************************************************
 *  文件名:PointTrans.cpp
 *
 *  圖像點運算API函數庫:
 *
 *  LinerTrans()		- 圖像線性變換
 *	WindowTrans()		- 圖像窗口變換
 *  GrayStretch()		- 圖像灰度拉伸
 *  InteEqualize()		-直方圖均衡
 *
 *************************************************************************/

#include "stdafx.h"
#include "PointTrans.h"
#include "DIBAPI.h"

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

/*************************************************************************
 *
 * 函數名稱:
 *   LinerTrans()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *   FLOAT fA		    - 線性變換的斜率
 *   FLOAT fB           - 線性變換的截距
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行灰度的線性變換操作。
 *
 ************************************************************************/

BOOL WINAPI LinerTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, FLOAT fA, FLOAT fB)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 中間變量
	FLOAT	fTemp;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 線性變換
			fTemp = fA * (*lpSrc) + fB;
			
			// 判斷是否超出范圍
			if (fTemp > 255)
			{
				// 直接賦值為255
				*lpSrc = 255;
			}
			else if (fTemp < 0)
			{
				// 直接賦值為0
				*lpSrc = 0;
			}
			else
			{
				// 四舍五入
				*lpSrc = (unsigned char) (fTemp + 0.5);
			}
		}
	}
	
	// 返回
	return TRUE;

}

/*************************************************************************
 *
 * 函數名稱:
 *   ThresholdTrans()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *   BYTE  bThre	    - 閾值
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行閾值變換。對于灰度值小于閾值的象素直接設置
 * 灰度值為0;灰度值大于閾值的象素直接設置為255。
 *
 ************************************************************************/
BOOL WINAPI ThresholdTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bThre)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 判斷是否小于閾值
			if ((*lpSrc) < bThre)
			{
				// 直接賦值為0
				*lpSrc = 0;
			}
			else
			{
				// 直接賦值為255
				*lpSrc = 255;
			}
		}
	}
	
	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數名稱:
 *   WindowTrans()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *   BYTE  bLow		    - 窗口下限
 *   BYTE  bUp          - 窗口上限
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行窗口變換。只有在窗口范圍內的灰度保持不變,
 * 小于下限的象素直接設置灰度值為0;大于上限的象素直接設置灰度值為255。
 *
 ************************************************************************/
BOOL WINAPI WindowTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bLow, BYTE bUp)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 判斷是否超出范圍
			if ((*lpSrc) < bLow)
			{
				// 直接賦值為0
				*lpSrc = 0;
			}
			else if ((*lpSrc) > bUp)
			{
				// 直接賦值為255
				*lpSrc = 255;
			}
		}
	}
	
	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數名稱:
 *   GrayStretch()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *   BYTE bX1			- 灰度拉伸第一個點的X坐標
 *   BYTE bY1			- 灰度拉伸第一個點的Y坐標
 *   BYTE bX2			- 灰度拉伸第二個點的X坐標
 *   BYTE bY2			- 灰度拉伸第二個點的Y坐標
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行灰度拉伸。
 *
 ************************************************************************/
BOOL WINAPI GrayStretch(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bX1, BYTE bY1, BYTE bX2, BYTE bY2)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 灰度映射表
	BYTE	bMap[256];
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 計算灰度映射表
	for (i = 0; i <= bX1; i++)
	{
		// 判斷bX1是否大于0(防止分母為0)
		if (bX1 > 0)
		{
			// 線性變換
			bMap[i] = (BYTE) bY1 * i / bX1;
		}
		else
		{
			// 直接賦值為0
			bMap[i] = 0;
		}
	}
	for (; i <= bX2; i++)
	{
		// 判斷bX1是否等于bX2(防止分母為0)
		if (bX2 != bX1)
		{
			// 線性變換
			bMap[i] = bY1 + (BYTE) ((bY2 - bY1) * (i - bX1) / (bX2 - bX1));
		}
		else
		{
			// 直接賦值為bY1
			bMap[i] = bY1;
		}
	}
	for (; i < 256; i++)
	{
		// 判斷bX2是否等于255(防止分母為0)
		if (bX2 != 255)
		{
			// 線性變換
			bMap[i] = bY2 + (BYTE) ((255 - bY2) * (i - bX2) / (255 - bX2));
		}
		else
		{
			// 直接賦值為255
			bMap[i] = 255;
		}
	}
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 計算新的灰度值
			*lpSrc = bMap[*lpSrc];
		}
	}
	
	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數名稱:
 *   InteEqualize()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行直方圖均衡。
 *
 ************************************************************************/
BOOL WINAPI InteEqualize(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 臨時變量
	LONG	lTemp;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 灰度映射表
	BYTE	bMap[256];
	
	// 灰度映射表
	LONG	lCount[256];
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 重置計數為0
	for (i = 0; i < 256; i ++)
	{
		// 清零
		lCount[i] = 0;
	}
	
	// 計算各個灰度值的計數
	for (i = 0; i < lHeight; i ++)
	{
		for (j = 0; j < lWidth; j ++)
		{
			lpSrc = (unsigned char *)lpDIBBits + lLineBytes * i + j;
			
			// 計數加1
			lCount[*(lpSrc)]++;
		}
	}
	
	// 計算灰度映射表
	for (i = 0; i < 256; i++)
	{
		// 初始為0
		lTemp = 0;
		
		for (j = 0; j <= i ; j++)
		{
			lTemp += lCount[j];
		}
		
		// 計算對應的新灰度值
		bMap[i] = (BYTE) (lTemp * 255 / lHeight / lWidth);
	}
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 計算新的灰度值
			*lpSrc = bMap[*lpSrc];
		}
	}
	
	// 返回
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人自拍一区| 亚洲最色的网站| 久久精品国产一区二区三区免费看| 色国产综合视频| 一区二区三区视频在线看| 色噜噜狠狠成人网p站| 亚洲老司机在线| 欧美男女性生活在线直播观看| 日日噜噜夜夜狠狠视频欧美人 | 成人黄色一级视频| 国产精品系列在线| 色素色在线综合| 日本一不卡视频| 欧美精品一区二区三区四区 | 亚洲欧美偷拍卡通变态| 色综合天天性综合| 香港成人在线视频| 日韩精品一区二区三区在线观看| 激情av综合网| 亚洲欧美国产毛片在线| 欧美男同性恋视频网站| 国产精品一二三四| 亚洲网友自拍偷拍| 久久精品综合网| 欧美色区777第一页| 国内精品伊人久久久久av影院| 国产精品视频看| 欧美美女网站色| 成人中文字幕在线| 亚洲一区二区三区四区五区黄| 日韩女优av电影| 色综合天天在线| 国内成人自拍视频| 亚洲一区二区三区影院| 久久日韩粉嫩一区二区三区| 91福利小视频| 国产成都精品91一区二区三| 亚洲午夜激情网页| 国产精品萝li| 精品国产三级电影在线观看| 色噜噜狠狠色综合欧洲selulu| 黑人精品欧美一区二区蜜桃| 亚洲小说欧美激情另类| 国产精品成人免费| 久久香蕉国产线看观看99| 欧美日韩在线电影| www..com久久爱| 九九久久精品视频| 午夜av一区二区| 亚洲欧美另类在线| 日本一区二区在线不卡| 欧美一级免费观看| 欧美色倩网站大全免费| 成a人片亚洲日本久久| 狠狠色狠狠色综合系列| 日韩激情av在线| 亚洲精品视频在线| 欧美国产精品一区| 精品国产一区二区三区忘忧草| 欧美日韩免费高清一区色橹橹| av资源网一区| 国产成人欧美日韩在线电影| 美女视频黄 久久| 日韩av电影免费观看高清完整版在线观看| 日本一区二区成人在线| 久久一区二区三区国产精品| 日韩美女天天操| 欧美xfplay| 日韩欧美一区二区不卡| 欧美一区永久视频免费观看| 欧美精品视频www在线观看 | 国产精品色一区二区三区| 精品捆绑美女sm三区| 337p亚洲精品色噜噜狠狠| 欧美亚洲综合网| 欧美怡红院视频| 欧美午夜电影网| 欧美日韩成人一区| 337p亚洲精品色噜噜噜| 国产婷婷精品av在线| 欧美成人猛片aaaaaaa| 日韩欧美高清在线| 久久久久久亚洲综合| 久久亚洲精品小早川怜子| 亚洲精品一区二区三区蜜桃下载| 日韩一级成人av| 精品国产百合女同互慰| 久久影院午夜论| 国产精品欧美精品| 亚洲免费观看高清完整版在线观看 | 人妖欧美一区二区| 亚洲国产日韩一级| 日本网站在线观看一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 麻豆国产精品777777在线| 激情综合网天天干| 成人污污视频在线观看| 99热精品一区二区| 欧美性受极品xxxx喷水| 日韩三级中文字幕| 国产色产综合产在线视频| 欧美激情自拍偷拍| 亚洲激情六月丁香| 午夜在线电影亚洲一区| 精品写真视频在线观看| 成人一级视频在线观看| 在线观看日产精品| 日韩欧美另类在线| 综合分类小说区另类春色亚洲小说欧美 | 久久精品欧美一区二区三区不卡 | 亚洲乱码中文字幕| 爽爽淫人综合网网站 | 成人免费不卡视频| 在线中文字幕一区| 精品久久五月天| 亚洲精品国久久99热| 免费欧美日韩国产三级电影| 国产白丝精品91爽爽久久| 欧美日韩精品综合在线| 久久久久久99久久久精品网站| 亚洲精品亚洲人成人网| 国产一区二三区| 在线观看日韩av先锋影音电影院| 国产·精品毛片| 国产区在线观看成人精品| 五月婷婷久久综合| 激情综合色丁香一区二区| 91麻豆福利精品推荐| 日韩成人午夜电影| 亚洲人吸女人奶水| 麻豆精品新av中文字幕| 成人黄色网址在线观看| 欧美一区二区美女| 亚洲人精品午夜| 久久精品免费观看| 欧美体内she精高潮| 中文字幕不卡一区| 久久66热re国产| 欧美日韩一级二级三级| 亚洲欧洲av在线| 国产精品一区在线观看乱码| 欧美日韩视频在线一区二区| 国产精品毛片a∨一区二区三区 | 久久精品欧美一区二区三区麻豆| 手机精品视频在线观看| 91视频免费观看| 亚洲国产精品精华液ab| 九九国产精品视频| 777色狠狠一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久成人综合网| 91精品视频网| 亚洲成av人影院| 欧美自拍丝袜亚洲| 综合婷婷亚洲小说| 9i看片成人免费高清| 国产精品免费看片| 粉嫩绯色av一区二区在线观看| wwwwxxxxx欧美| 精品一区二区久久久| 日韩精品一区二区三区三区免费| 日欧美一区二区| 91精品国产一区二区三区| 五月激情丁香一区二区三区| 欧美日韩精品一区二区三区蜜桃| 一区二区高清视频在线观看| 91丝袜高跟美女视频| 亚洲六月丁香色婷婷综合久久| 不卡一区二区在线| 亚洲视频在线一区二区| 一本一本久久a久久精品综合麻豆| 中文字幕一区日韩精品欧美| 99久久久免费精品国产一区二区| 中文字幕免费在线观看视频一区| 丁香桃色午夜亚洲一区二区三区| 国产日本欧美一区二区| 成人激情电影免费在线观看| 亚洲人成7777| 欧美视频在线播放| 美女视频一区在线观看| 亚洲精品一区二区三区福利| 国产福利一区在线| 国产精品家庭影院| 欧洲av在线精品| 日韩主播视频在线| 欧美videossexotv100| 国产高清一区日本| 亚洲精品综合在线| 欧美一区二区三区公司| 国产一区二区日韩精品| 中文字幕av一区二区三区高| 色乱码一区二区三区88| 日本特黄久久久高潮| 久久综合久色欧美综合狠狠| 成人污视频在线观看| 亚洲成国产人片在线观看| 精品欧美一区二区在线观看 | 99久久精品久久久久久清纯| 一区二区三区欧美久久| 欧美一区二区私人影院日本|