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

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

?? improve.cpp

?? VS2005圖像處理程序的源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "StdAfx.h"
#include "improve.h"
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

#pragma warning ( disable : 4018)

int GetAsh(BYTE** imageBuf, int x, int y)
{
	int clr;
	clr = (imageBuf[y][x*4] + imageBuf[y][x*4+1]
			+imageBuf[y][x*4+2]) / 3;
	return clr;
}

/********************************************************
* 把線形存儲的像素轉化為二維數組形式
* 參數: image 線形存儲的像素, width,height 圖象的長寬
********************************************************/
BYTE** CreatImage(BYTE* image, unsigned int width, unsigned int height, int bt=4)
{
	BYTE** imageBuf = (BYTE**)malloc(sizeof(BYTE*)*(height));
	for(int y=0; y<height; y++)
	{
		//使imageBuf中每個指針分別指向其下標表示的行的行首地址
		imageBuf[y] = image+y*width*bt; 
	}
	return imageBuf;
}

/**************************************************
* 功能: 設定指定位置的像素灰度
* 參數: imageBuf為目標圖像 x,y為要設定像素的坐標
**************************************************/
void SetPixelXY(BYTE** imageBuf1, int x, int y, int a)
{
	imageBuf1[y][x*4] = a;
	imageBuf1[y][x*4+1] = a;
	imageBuf1[y][x*4+2] = a;
	imageBuf1[y][x*4+3]= 255;
}

/**************************************************
* 功能: 使用模板對彩色圖鄰域進行運算
* 參數: imageBuf為目標圖像 w、h為圖像大小
*       templt為模板 tw為鄰域大小 
*		x,y為要取得像素的坐標
*       cn為顏色分量編號 0為藍色 1為綠色 2為紅色
**************************************************/
int TempltExcuteCl(BYTE** imageBuf0, int w, int h, int* templt, int tw, int x, int y, int cn)
{
	int i,j;                        //循環變量
	int m=0;                      //用來存放加權和
	int px,py;   
	//依次對鄰域中每個像素進行運算
	for(i=0; i<tw; i++)
	{
		for(j=0; j<tw; j++)
		{
			//計算對應模板上位置的像素在原圖像中的位置
			py=y-tw/2+i;
			px=x-tw/2+j;
			//加權求和
			m+=imageBuf0[py][px*4+cn] * templt[i*tw+j];
		}
	}
	return m;                     //返回結果
}

/*****************************************************************
* 功能: 使用模板對灰度圖鄰域進行運算 
* 參數: imageBuf為目標圖像 w、h為圖像大小
*       templt為模板 tw為鄰域大小 
*		x,y為要取得像素的坐標
******************************************************************/
int TempltExcuteAsh(BYTE** imageBuf0, int w, int h, 
					int* templt, int tw, int x, int y)
{
	int i,j;                        //循環變量
	int m=0;                      //用來存放加權和
	int px,py;   
	//依次對鄰域中每個像素進行運算
	for(i=0; i<tw; i++)
	{
		for(j=0; j<tw; j++)
		{
			//計算對應模板上位置的像素在原圖像中的位置
			py=y-tw/2+i;
			px=x-tw/2+j;
			//加權求和
			m+=GetAsh(imageBuf0,px,py) * templt[i*tw+j];
		}
	}
	return m;                     //返回結果
}

/******************************************************************
* 功能: 灰度圖像的簡單平滑處理
* 參數: image0為原圖形,image1為平滑結果,
*		w、h為圖象的寬和高
*       size為進行平滑的鄰域邊長
******************************************************************/
void SmoothAsh(BYTE* image0, BYTE* image1, 
			   unsigned int w, unsigned int h, unsigned int size)
{
	//將圖像轉化為矩陣形式
	BYTE** imageBuf0 = CreatImage(image0, w, h);
	BYTE** imageBuf1 = CreatImage(image1, w, h);
	//定義模板
	int* templt;
	int x,y;
	int a;
	int scale;

	//根據鄰域大小設定模板
	templt = new int[size * size];
	for(x=0; x<size*size; x++)
	{
		templt[x]=1;
	}
	//設定衰減因子
	scale = size*size;

	//依次對原圖像的每個像素進行處理
	for(y=size/2; y<h-size/2; y++)
	{
		for(x=size/2; x<w-size/2; x++)
		{
			a=TempltExcuteAsh(imageBuf0,w,h,templt,size,x,y);
			a/= scale;
			//過限處理
			a = a>255?255:a;    
			a = a<0?0:a;
			SetPixelXY(imageBuf1,x,y,a);
		}
	}

	//清理內存
	delete[] templt;
	free(imageBuf0);
	free(imageBuf1);
}

/******************************************************************
* 功能: 彩色圖像的簡單平滑處理
* 參數: image0為原圖形,image1平滑結果,
*		w、h為圖象的寬和高
*       size為進行平滑的鄰域邊長
******************************************************************/
void SmoothCl(BYTE* image0, BYTE* image1, 
			  unsigned int w, unsigned int h, unsigned int size)
{
	//將圖像轉化為矩陣形式
	BYTE** imageBuf0 = CreatImage(image0, w, h);
	BYTE** imageBuf1 = CreatImage(image1, w, h);
	//定義模板
	int* templt;
	int x,y,c;
	int a;
	int scale;

	//根據鄰域大小設定模板
	templt = new int[size * size];
	for(x=0; x<size*size; x++)
	{
		templt[x]=1;
	}
	//設定衰減因子
	scale = size*size;

	//依次對原圖像的每個像素進行處理
	for(y=size/2; y<h-size/2; y++)
	{
		for(x=size/2; x<w-size/2; x++)
		{
			//依次對彩色圖像的三個分量灰度進行處理
			for(c=0; c<3; c++)
			{
				a=TempltExcuteCl(imageBuf0,w,h,templt,size,x,y,c);
				a/= scale;
				//過限處理
				a = a>255?255:a;    
				a = a<0?0:a;
				imageBuf1[y][x*4+c]=a;
			}
		}
	}

	//清理內存
	delete[] templt;
	free(imageBuf0);
	free(imageBuf1);
}

/******************************************************************
* 功能: 彩色圖像的高斯平滑處理
* 參數: image0為原圖形,image1平滑結果,
*		w、h為圖像的寬和高
******************************************************************/
void SmoothGaussCl(BYTE* image0, BYTE* image1, unsigned int w, unsigned int h)
{
	//將圖像轉化為矩陣形式
	BYTE** imageBuf0 = CreatImage(image0, w, h);
	BYTE** imageBuf1 = CreatImage(image1, w, h);
	//設定模板
	int templt[9]={1,2,1,2,4,2,1,2,1};
	int x,y,c;
	int a;
	int scale;

	//設定衰減因子
	scale = 16;

	//依次對原圖像的每個像素進行處理
	for(y=1; y<h-1; y++)
		for(x=1; x<w-1; x++)
			for(c=0; c<3; c++)
			{
				//利用高斯模板對鄰域進行處理
				a=TempltExcuteCl(imageBuf0,w,h,templt,3,x,y,c);
				a/= scale;
				//過限處理
				a = a>255?255:a;    
				a = a<0?0:a;
				imageBuf1[y][x*4+c]=a;
			}

	//清理內存
	free(imageBuf0);
	free(imageBuf1);
} 

/**************************************************
* 功能: 使用模板對灰度圖鄰域排序取中值
* 參數: imageBuf為目標圖像 w、h為圖像大小
*       templt為模板 tw為鄰域大小 
*		x,y為當前采樣窗口中心像素的坐標
**************************************************/
int MedianValueAsh(BYTE** imageBuf0, int w, int h, int* templt, int tw, int x, int y)
{
	int i,j,k;                   
	int px,py,c;
	int* value;                //用來保存要排序的數值
	int count;                 //用來保存采樣窗口的像素數量
	value= new int[tw*tw]; 
	k=0;
	//從采樣窗口中取得像素灰度
	for(i=0; i<tw; i++)
	{
		for(j=0; j<tw; j++)
		{
			py=y-tw/2+i;
			px=x-tw/2+j;
			//如果該像素位于采樣窗口中
			if(templt[i*tw+j]>0)
			{
				//保存像素灰度
				value[k]=GetAsh(imageBuf0,px,py);
				k++;
			}
		}
	}
	//記錄保存的像素個數
	count=k;
	//對保存的像素灰度數據進行排序
	for(i=0; i<count-1; i++)
	{
		k=i;
		for(j=i+1; j<count; j++)
			if(value[j]<value[k]) k=j;
		c=value[i];
		value[i]=value[k];
		value[k]=c;
	}
	//保存中值
	c=value[count/2];
	//清理內存
	delete[] value;
	return c;
}

/******************************************************************
* 功能: 灰度圖像的中值濾波平滑處理
* 參數: image0為原圖形,image1平滑結果,
*		w、h為圖象的寬和高
*       size為進行平滑的鄰域邊長
******************************************************************/
void SmoothMedianAsh(BYTE* image0, BYTE* image1, unsigned int w, unsigned int h, unsigned int size)
{
	//將圖像轉化為矩陣形式
	BYTE** imageBuf0 = CreatImage(image0, w, h);
	BYTE** imageBuf1 = CreatImage(image1, w, h);
	//設定模板
	int* templt;
	int x,y;
	int a;
	int scale;

	//根據鄰域大小設定模板
	templt = new int[size * size];
	for(x=0; x<size*size; x++) templt[x]=1;

	//設定衰減因子
	scale = 1;

	//依次對原圖像的每個像素進行處理
	for(y=size/2; y<h-size/2; y++)
		for(x=size/2; x<w-size/2; x++)
		{
			//取采樣窗口中像素灰度的中值
			a=MedianValueAsh(imageBuf0,w,h,templt,size,x,y);
			a/= scale;
			//過限處理
			a = a>255?255:a;    
			a = a<0?0:a;
			SetPixelXY(imageBuf1,x,y,a);
		}

		//清理內存
		delete[] templt;
		free(imageBuf0);
		free(imageBuf1);
}

/**************************************************
* 功能: 使用模板對彩色圖鄰域排序取中值
* 參數: imageBuf為目標圖像 w、h為圖像大小
*       templt為模板 tw為鄰域大小 
*		x,y為當前采樣窗口中心像素的坐標
*       cn為顏色分量編號 0為藍色 1為綠色 2為紅色
**************************************************/
int MedianValueCl(BYTE** imageBuf0, int w, int h, int* templt, int tw, int x, int y, int cn)
{
	int i,j,k;                   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av电影免费观看| 欧美亚洲自拍偷拍| 色久优优欧美色久优优| 6080国产精品一区二区| 国产三级一区二区三区| 午夜私人影院久久久久| 国产69精品久久99不卡| 3d成人h动漫网站入口| 国产精品日韩成人| 久草精品在线观看| 欧美日韩在线精品一区二区三区激情| 久久影音资源网| 偷拍日韩校园综合在线| 99精品在线观看视频| 久久精品在线观看| 国内精品免费**视频| 91精品国产综合久久蜜臀 | 久久午夜免费电影| 亚洲成av人片www| 91天堂素人约啪| 欧美高清在线精品一区| 国产美女精品在线| 日韩精品一区二区三区swag | 久久国产精品99精品国产| 欧美午夜在线一二页| 综合中文字幕亚洲| 岛国精品在线播放| 亚洲国产精品黑人久久久| 久久99久久精品欧美| 欧美日韩午夜精品| 一区二区三区欧美日韩| 懂色av中文一区二区三区 | 一区二区三区丝袜| 91免费看片在线观看| 国产精品高潮久久久久无| 大白屁股一区二区视频| 亚洲国产成人在线| 波多野结衣在线一区| 国产精品免费免费| 91蜜桃免费观看视频| 一区二区三区四区亚洲| 欧美三级三级三级| 日韩在线一二三区| 精品成人在线观看| 国产精品自产自拍| 国产精品免费aⅴ片在线观看| 国产91丝袜在线播放0| 国产欧美久久久精品影院| 国产馆精品极品| 亚洲国产成人午夜在线一区| 91亚洲男人天堂| 一区二区三区日韩精品| 欧美日韩国产一区二区三区地区| 亚洲3atv精品一区二区三区| 欧美久久久久久久久中文字幕| 亚洲一区在线观看视频| 欧美一级一级性生活免费录像| 韩国精品在线观看| 久久国产视频网| 国产亚洲欧美在线| 91麻豆国产福利在线观看| 亚洲国产一二三| 日韩一区二区三区视频在线观看| 久久99精品一区二区三区| 欧美激情一区二区三区| 色呦呦国产精品| 日韩电影在线观看一区| 国产欧美一二三区| 欧美人妖巨大在线| 韩国精品久久久| 亚洲精品ww久久久久久p站| 欧美放荡的少妇| 成人性生交大合| 热久久国产精品| 欧美激情一区二区三区不卡| 欧美午夜精品久久久久久超碰| 久热成人在线视频| 亚洲精品免费视频| 欧美tk—视频vk| 欧洲精品在线观看| 国产成人精品三级麻豆| 亚洲成人av在线电影| 久久久久久免费网| 9191成人精品久久| av不卡免费电影| 久久97超碰国产精品超碰| 一区二区三区在线高清| 国产精品你懂的在线欣赏| 91麻豆精品91久久久久同性| 99国产精品一区| 国产精品亚洲专一区二区三区 | 777a∨成人精品桃花网| av中文字幕不卡| 国内成人免费视频| 日韩成人精品在线观看| 亚洲人xxxx| 国产无人区一区二区三区| 亚洲麻豆国产自偷在线| 精品999在线播放| 欧美日韩一区二区三区四区五区| 成人福利视频在线看| 免费欧美在线视频| 无吗不卡中文字幕| 亚洲综合免费观看高清完整版| 国产精品欧美久久久久一区二区| 欧美哺乳videos| 欧美一区二区视频在线观看2020 | 久久久久久99久久久精品网站| 欧美电影影音先锋| 欧美人体做爰大胆视频| 欧美在线色视频| 91成人免费在线| 色偷偷久久一区二区三区| 不卡一区在线观看| 懂色一区二区三区免费观看| 国产一区 二区 三区一级| 美女视频一区二区三区| 日本亚洲电影天堂| 人人精品人人爱| 精品制服美女久久| 国产精品99久久久久久似苏梦涵| 国产一区高清在线| 国产精品1区2区3区在线观看| 韩国精品一区二区| 懂色av噜噜一区二区三区av| av成人免费在线| 色哟哟国产精品| 欧美视频日韩视频在线观看| 欧美精品丝袜久久久中文字幕| 宅男噜噜噜66一区二区66| 日韩欧美国产成人一区二区| 久久久久久免费毛片精品| 国产精品三级电影| 亚洲一区影音先锋| 天堂va蜜桃一区二区三区| 男人的j进女人的j一区| 国产一区久久久| 不卡的电影网站| 欧美综合在线视频| 日韩欧美aaaaaa| 欧美激情艳妇裸体舞| 亚洲另类色综合网站| 五月天一区二区三区| 国产一区欧美日韩| 在线一区二区观看| 欧美一区二区在线免费播放| 久久精品在线免费观看| 亚洲乱码国产乱码精品精的特点| 亚瑟在线精品视频| 国产精品一区二区视频| 一本一本久久a久久精品综合麻豆| 欧美日韩精品一区二区在线播放| 日韩精品一区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 一区二区激情小说| 国产自产视频一区二区三区| 日本韩国视频一区二区| 精品日本一线二线三线不卡| 亚洲情趣在线观看| 国产老妇另类xxxxx| 欧美色精品在线视频| 久久午夜羞羞影院免费观看| 亚洲一区二区在线观看视频| 国产尤物一区二区在线| 欧美日韩精品系列| 国产精品午夜在线| 乱一区二区av| 欧美最猛黑人xxxxx猛交| 欧美激情一区二区三区不卡| 天堂资源在线中文精品| 成人综合在线网站| 欧美大片一区二区三区| 一区二区视频免费在线观看| 国产精品一二三四区| 日韩一区二区免费在线电影 | 欧洲av在线精品| 亚洲国产经典视频| 国内精品伊人久久久久av一坑| 欧美片在线播放| 亚洲男人都懂的| av资源网一区| 国产精品拍天天在线| 韩国视频一区二区| 日韩欧美在线影院| 天天av天天翘天天综合网| 在线视频你懂得一区二区三区| 国产欧美精品一区二区色综合| 久久精工是国产品牌吗| 日韩视频一区在线观看| 偷窥国产亚洲免费视频| 在线免费观看日本欧美| 中文字幕在线观看不卡视频| 成人一级黄色片| 亚洲国产精品二十页| 国产99久久久国产精品免费看 | 亚洲欧美另类小说| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | av一区二区三区四区| 中文字幕日韩欧美一区二区三区| 国产精品资源网|