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

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

?? omlib.cpp

?? 圖像處理軟件,功能比較基礎
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
{
	int temp;	
	int **Temp;
	Temp= new int *[input.row];
	for (int s=0;s<input.row;s++)
	{
		Temp[s]=new int [input.col];
		ZeroMemory(Temp[s],input.col*sizeof(int));
	}
	if (!Temp)
		return FALSE;
	for (int i=1;i<input.row-1;i++)
		for (int j=1;j<input.col-1;j++)
		{
			temp=0;
			for (int k=0;k<3;k++)
		     for (int l=0;l<3;l++)
			 {
				 temp+=input.p[i+k-1][j+l-1]*ker.kernel[k*3+l];
			 }			
			 Temp[i][j]=abs(temp);		
			 output.p[i][j]=(int)Temp[i][j]/fenmu;
		}		
		return TRUE;
}

BOOL Robert(Picture input,Picture output)
{
	int tempx,tempy;	
	int **Temp;
	Temp= new int *[input.row];
	for (int s=0;s<input.row;s++)
	{
		Temp[s]=new int [input.col];
		ZeroMemory(Temp[s],input.col*sizeof(int));
	}
	if (!Temp)
		return FALSE;
	for (int i=0;i<input.row-1;i++)
		for (int j=0;j<input.col-1;j++)
		{
			tempx=0;tempy=0;
			{
				 tempx=input.p[i][j]-input.p[i+1][j+1];
				 tempy=input.p[i][j+1]-input.p[i+1][j];
			 }			
			 Temp[i][j]=abs(tempx)+abs(tempy);		
		}
		normalize(Temp,&input.row,&input.col,output);		
		return TRUE;
}



int  **Radon(Picture input,int *step0,int &cornernumz,int &rhoMax)
{
	unsigned char **pic;
	int row,col;
	float step;
    pic=input.p;
	row=input.row;
	col=input.col;
	step=float(1.0/(float)(*step0));
	int Xb,Ix,Yb,Iy;
	float *x,*y,*theta_sin,*theta_cos;
	int **tempx,**tempy,**tempz;
	int cornernum;
	
	rhoMax=(int)(sqrt((col)*(col)+(row)*(row)));
	x=new float [rhoMax];
	y=new float [rhoMax];
	
	for(int i=0; i<col; i++)
		x[i] = (float)(i-(col)/2.0);
	for(i=0; i<row; i++)
		y[i] = (float)(i-(row)/2.0);
	cornernum=(int)(90/(step));
	cornernumz=2*cornernum;
	theta_sin =new float [cornernum];
	theta_cos =new float [cornernum];
	for (i=0;i<cornernum;i++)
		theta_sin[i]=(float)sin(((float)i)*PI/((float)(2*cornernum)));
	for (i=0;i<cornernum;i++)
		theta_cos[i]=(float)cos(((float)i)*PI/((float)(2*cornernum)));
	
	

	tempx=new int *[cornernum];
	tempy=new int *[cornernum];
	for (i=0;i<cornernum;i++)
	{
		tempx[i]=new int [rhoMax];	
		tempy[i]=new int [rhoMax];	
		ZeroMemory(tempx[i],4*rhoMax);
		ZeroMemory(tempy[i],4*rhoMax);
	}	
    tempz=new int *[cornernumz];
	for (i=0;i<cornernumz;i++)
	{
		tempz[i]=new int [rhoMax];	
		ZeroMemory(tempz[i],4*rhoMax);
	}

	

//====================變換過程================
	
	
	
	for (i=0;i<col;i++)
	{
		for (int j=0;j<row;j++)
		{
			for (int k=0;k<cornernum;k++)
			{
				if (pic[j][i]==0)
				{
					Xb=(int)(x[i]*(theta_cos[k])-y[j]*(theta_sin[k]));//xb對應著col
		        	Ix=Xb+(int)(rhoMax/2.0);
			        Yb=(int)(-x[i]*(theta_sin[k])-y[j]*(theta_cos[k]));//yb對應著row
					Iy=Yb+(int)(rhoMax/2.0);
					tempy[k][rhoMax-Iy-1]++;
					tempx[k][Ix]++;						
				}
			}
		}
	}
	for (i=0;i<cornernum;i++)
		for (int j=0;j<rhoMax;j++)
		{
			tempz[i][j]=tempx[i][j];
		}
    for (i=cornernum;i<cornernumz;i++)
		for (int j=0;j<rhoMax;j++)
		{
			tempz[i][j]=tempy[i-cornernum][rhoMax-j-1];
		}

//==============釋放空間=========		
		
		delete [] x;
		delete [] y;
		delete [] theta_sin;
	    delete [] theta_cos;
//需要調試(44過不去)
		for (i=0;i<cornernum;i++)
		{
			delete [] tempx[i];
			delete [] tempy[i];
		}
		delete []tempx;
		delete []tempy;
//=================================
		return tempz;
}


BOOL Fliter_Med(Picture oldpic,Picture dealpic)
{

	int temp[9];	
	int num;
	int max;
	for (int i=1;i<oldpic.row-1;i++)
		for (int j=0;j<oldpic.col-1;j++)
		{
			
			for (int k=0;k<3;k++)			
				for (int l=0;l<3;l++)
				{
					temp[k*3+l]=oldpic.p[i+k-1][j+l-1];
				}
			for (int l=0;l<4;l++)
			{
				max=temp[0];
				num=0;
				for (int m=1;m<9;m++)
				{
					if (max<temp[m])
					{
						max=temp[m];
						num=m;
					}
				}				
					temp[num]=0;
			}
			max=temp[0];			
			for (int m=1;m<9;m++)
				{
					if (max<temp[m])
					{
						max=temp[m];
					}
				}
			dealpic.p[i][j]=max;
		}
}




			




BOOL writepic(CString FileName,Picture input)
{
	FileName.MakeLower();
	if (FileName.Find(".pic")!=-1)
	{
		unsigned char **picture;
		int row,col;
		FILE       *fp;
		unsigned char head_byte[64];
		int type=1;
		picture=input.p;
		col=input.col;
		row=input.row;
		if ((fp=fopen(FileName,"wb"))==NULL)
		{
			AfxMessageBox("寫入文件錯誤!");
			return FALSE;
		}
		for(int i=0;i<64;i++)  head_byte[i] = 0;
		head_byte[0] = 'I';  /* image type. 'I':b/w image, 'C':color image */
		head_byte[1] = 'M';
		head_byte[2] = head_byte[3] = 0;  /* comment space */
		head_byte[4] = col % 256;
		head_byte[5] = col / 256;  /* column size */
		head_byte[6] = row % 256;
		head_byte[7] = row / 256;  /* row size */
		head_byte[8] = head_byte[9] = 0;  /* column start */
		head_byte[10] = head_byte[11] = 0;  /* row start */
		head_byte[12] = head_byte[13] =0;
		head_byte[14] = type % 256;
		head_byte[15] = type / 256;  /* data type. 1:unsigned char, 2:int,   */
		/*            3:float,         4:double */
		fwrite(head_byte,64,1,fp);
		for(int RowNo=0;RowNo<row;RowNo++)
			fwrite(picture[RowNo],1,col,fp);
		fclose(fp);
	}
	else if(FileName.Find(".bmp")!=-1)
	{		
		SaveDIBFile(ChangeToHDIB(input),FileName);
	}		
	else if(FileName.Find(".tif")!=-1)
	{
		char *tempfilename;
		tempfilename = new char [FileName.GetLength()];
		strcpy(tempfilename,FileName);
		OutputTifImageWithName(input.p,input.row,input.col,tempfilename);
		delete []tempfilename;
	}
	else if(FileName.Find(".raw")!=-1)
	{
		FILE       *fp;				
		if ((fp=fopen(FileName,"wb"))==NULL)
		{
			AfxMessageBox("寫入文件錯誤!");
			return FALSE;
		}
		fseek(fp,0,SEEK_SET);
		for(int RowNo=0;RowNo<input.row;RowNo++)
			fwrite(input.p[RowNo],1,input.col,fp);
		fclose(fp);
	}

	return TRUE;
}




void ffree_2d(void **a,int row)
{
  int i;

  for(i=0;i<row;i++) 
	  free(a[i]);
  free(a);
}


BOOL WINAPI WriteBmpHead(BITMAPINFO *BitmapInfo,WORD ColLen,WORD RowLen,WORD BitCount,int nDelta)
{
    DWORD ImgSize;
    int i;

    ImgSize=(DWORD)ColLen*RowLen;
    BitmapInfo->bmiHeader.biSize=40;
    BitmapInfo->bmiHeader.biWidth=ColLen;
    BitmapInfo->bmiHeader.biHeight=RowLen;
    BitmapInfo->bmiHeader.biPlanes=1;
    BitmapInfo->bmiHeader.biBitCount=BitCount;
    BitmapInfo->bmiHeader.biCompression=0;
    BitmapInfo->bmiHeader.biSizeImage=ImgSize;
    BitmapInfo->bmiHeader.biXPelsPerMeter=0xB13;
    BitmapInfo->bmiHeader.biYPelsPerMeter=0xB13;
    BitmapInfo->bmiHeader.biClrUsed=256;
    BitmapInfo->bmiHeader.biClrImportant=0;
    BitmapInfo->bmiHeader.biSizeImage=ColLen*RowLen;
	for(i=0;i<256;i++)
    {
		if((i+nDelta)>=0&&(i+nDelta)<=255)
		{
			BitmapInfo->bmiColors[i].rgbBlue=(BYTE)i+nDelta;
			BitmapInfo->bmiColors[i].rgbGreen=(BYTE)i+nDelta;
			BitmapInfo->bmiColors[i].rgbRed=(BYTE)i+nDelta;
			BitmapInfo->bmiColors[i].rgbReserved=0;
		}
		else if(i+nDelta<0)
		{
			BitmapInfo->bmiColors[i].rgbBlue=0;
			BitmapInfo->bmiColors[i].rgbGreen=0;
			BitmapInfo->bmiColors[i].rgbRed=0;
			BitmapInfo->bmiColors[i].rgbReserved=0;
		}
		else 
		{
			BitmapInfo->bmiColors[i].rgbBlue=255;
			BitmapInfo->bmiColors[i].rgbGreen=255;
			BitmapInfo->bmiColors[i].rgbRed=255;
			BitmapInfo->bmiColors[i].rgbReserved=0;
		}
    }
    return 1;
}

HDIB WINAPI ChangeToHDIB(Picture input,int nDelta)
{
	int HeadBytes;
	int nPixelBytes;
	int Row,Col;
	unsigned char** Image;
	BITMAPINFO* bmfInfo;
	DWORD dwBitsSize,dwSize,dOffset,dwHeadsize;
	HDIB hDIB;
	LPSTR pDIB,lpDIBBits;
	WORD wHeight,wWidth,wNewWidth;
	HeadBytes=0;
	nPixelBytes=8;
	Row=input.row;
	Col=input.col;
	Image = input.p;

	wWidth = Col;
	wHeight = Row;
	
	wNewWidth=(((wWidth*8)+31)/32)*4;
	dwSize=(DWORD)wNewWidth*wHeight;
	dwHeadsize=sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);
	dwBitsSize=dwHeadsize+dwSize;
	dOffset=dwSize;

	 // Allocate memory for DIB
 
	hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize);
	if (hDIB == 0)
	{
		return NULL;
	}
	pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
	bmfInfo=(BITMAPINFO*)pDIB;
	WriteBmpHead(bmfInfo,wWidth,wHeight,8,nDelta);
	lpDIBBits=pDIB+dwHeadsize;

  	for(WORD i=0;i<wHeight;i++)
	{
		dOffset-=wNewWidth;
		for(WORD j=0;j<wWidth;j++)
			*(lpDIBBits+dOffset+j)=Image[i][j];
	}
	::GlobalUnlock((HGLOBAL) hDIB);
	return hDIB;
}













reconstruct (int **input,int *cornernum,int *rhoMax,float *step,int *row,int *col,unsigned char **output,int *threshold)
{
	int max;
	int max_thetanum;
	int max_rhoMaxnum;

	for (int y=0;y<1;y++)	
	{   
		max=10000;
		max_thetanum=0;
	    max_rhoMaxnum=0;		
		for (int i=0;i<*cornernum;i++)
			for (int j=0;j<*rhoMax;j++)
			{
				if (input[i][j]!=0)
				{
					if (input[i][j]<max)
					{
						max=input[i][j];
						max_thetanum=i;
						max_rhoMaxnum=j;
					}
				}
			}
	
			int r,c;
			r=10,c=5;
		
			for (int p=0;p<r;p++)
				for (int q=0;q<r;q++)
					if ((max_thetanum+p-c)>=0&&(max_thetanum+p-c)<*cornernum&&(max_rhoMaxnum+q-c)>=0&&(max_rhoMaxnum+q-c)<*rhoMax)
					{
						input[max_thetanum+p-c][max_rhoMaxnum+q-c]=0;
					}		
					max_rhoMaxnum=(int)(max_rhoMaxnum-(*rhoMax)/2);
					invradon (&max_thetanum,&max_rhoMaxnum,step,row,col,output);
					
	}
	return TRUE;
//==========
}






BOOL invradon(int *theta,int *rhoMax,float *step,int *row,int *col,unsigned char **outpic)
{
	int rowy,colx;
	double ta;
    
	ta=PI*(*theta)*(*step)/180.0;
	if (ta<0.0001&&ta>-0.0001)
	{
		colx=(int)(*col/2+(*rhoMax));
		if (colx<*col&&colx>=0)
		{
			for (int RowNum=0;RowNum<*row;RowNum++)
			{
				outpic[RowNum][colx]=255;
			}
		}
	}
	else
	{
		/*
		for (int ColNum=0;ColNum<*col;ColNum++)
		{
			rowy=(int)( -(*rhoMax)/sin(ta)+(ColNum-(*col/2))*cos(ta)/sin(ta) );
			rowy=(int)(rowy+(*row)/2);
			if (rowy<*row&&rowy>=0)
				outpic[rowy][ColNum]=255;				
		}
		*/
		for (int RowNum=0;RowNum<*row;RowNum++)
		{
			colx=(int)((RowNum-(*row/2))*sin(ta)/cos(ta)+(*rhoMax)/cos(ta));
			colx=(int)(colx+(*col)/2);
			if(colx<*col&&colx>=0)
				outpic[RowNum][colx]=255;				
		}
	}
	return TRUE;
}




//===================高斯噪聲============================

float GaussNoise( float mean, float deviate)
{
    int        u1,u2;
    float      v1,v2,S;
    double     tmpv;
    static int FirstFlag = 1;

    if ( FirstFlag)
    {
	srand( (unsigned) time(NULL) );	/*  or use srand() function  */
	FirstFlag = 0;
    }

    do
    {
      u1 = rand();
      u2 = rand();
      v1 = 2 * (float)u1 / RAND_MAX - 1;
      v2 = 2 * (float)u2 / RAND_MAX - 1;
      S  = v1 * v1 + v2 * v2;
    } while (S>1);

    tmpv = v1 * sqrt(-2*log(S)/S);
    /*  now tmpv is a random variable of standard narmal N(0,1)  */

    tmpv = tmpv * deviate + mean;

    return (float) tmpv;
}

void ImageAddGuassNoise(Picture input, Picture output,float mean,float deviate)
{
	int row , col;
	unsigned char **img;
	img=input.p;
	row=input.row;
	col=input.col;
	for(int i=0;i<row;i++)
	for(int j=0;j<col;j++)
	{
		float nos1 = img[i][j] + 255 * GaussNoise( mean,deviate);
		int nos =(int) nos1;
		if(nos < 0) output.p[i][j] = 0;
		else if(nos > 255 ) output.p[i][j] = 255;
		else output.p[i][j] = (unsigned char) nos;
	}	
	return ;
}


//===============翻轉=====================
BYTE **ImgRotate(Picture input , int& dr, int& dc, int corner , BOOL dir, BYTE nBackgrd )
{
	/*
		BYTE **src;
	src=input.p;
	int sr,sc;
	sr=input.row;
	sc=input.col;
	double a11, a12, a21, a22,theta;
	theta=(corner/180.0*PI);
	a11 =cos(theta);
	a12 = sin(theta);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品996| 欧美肥大bbwbbw高潮| 精品粉嫩超白一线天av| 亚洲午夜精品在线| 666欧美在线视频| 亚洲激情自拍视频| 91视频com| 亚洲欧美aⅴ...| 成人激情综合网站| 国产欧美日韩综合| 国产成人精品免费| 久久精品亚洲精品国产欧美kt∨ | 欧美一区二区三区人| 丝袜诱惑制服诱惑色一区在线观看 | 久久精品国产99国产| 91精品欧美综合在线观看最新| 一区二区三区在线观看动漫| 欧美在线观看禁18| 五月婷婷综合激情| 日韩精品资源二区在线| 国产又粗又猛又爽又黄91精品| 久久亚洲一区二区三区四区| 99久久国产综合精品麻豆| **欧美大码日韩| 日韩一区二区三区视频在线观看| 国产98色在线|日韩| 国产日韩一级二级三级| 日本韩国精品一区二区在线观看| 亚洲综合色噜噜狠狠| 日韩精品一区二区三区四区| 色综合网色综合| 97精品国产露脸对白| 亚洲aaa精品| 国产精品白丝在线| 日韩精品一区二区三区蜜臀| 不卡欧美aaaaa| 免费高清在线视频一区·| 亚洲国产精品v| 制服丝袜中文字幕一区| 成人小视频免费在线观看| 日韩高清在线观看| 日韩美女视频一区二区| 精品国产伦一区二区三区观看体验 | 一区二区在线观看视频| 欧美精品一区二区三区四区| 欧美三级电影在线观看| 国产乱妇无码大片在线观看| 五月天视频一区| 一区二区三区日韩| 亚洲色图在线视频| 日本一区二区三区在线不卡| 日韩女优制服丝袜电影| 91久久香蕉国产日韩欧美9色| 国产精品77777| 国产伦精品一区二区三区免费迷| 美女任你摸久久| 首页国产丝袜综合| 不卡av电影在线播放| 粉嫩嫩av羞羞动漫久久久 | 欧美a级一区二区| 久久国产精品第一页| 奇米一区二区三区| 国产一区 二区| 99久久精品99国产精品| 欧美优质美女网站| 91精品国产免费久久综合| 欧美成人精品1314www| 欧美一区二区三区播放老司机| 欧美一区二区三区在线观看视频| 在线播放91灌醉迷j高跟美女| 91国产福利在线| 日韩三级免费观看| 国产精品成人免费在线| 亚洲自拍欧美精品| 久久国内精品自在自线400部| 日日骚欧美日韩| 美女视频黄频大全不卡视频在线播放| 黄一区二区三区| 美国毛片一区二区| 99久久综合国产精品| 欧美人与性动xxxx| 国产蜜臀av在线一区二区三区| 依依成人综合视频| 韩国女主播成人在线| 色妞www精品视频| 久久久无码精品亚洲日韩按摩| 国产精品久线在线观看| 精品一区二区三区的国产在线播放| 国产不卡视频在线观看| 精品国产乱码久久久久久闺蜜| 一区二区三区欧美日| 国产精品12区| 久久精品男人天堂av| 国产成人在线视频播放| 2017欧美狠狠色| 五月婷婷激情综合| 国模冰冰炮一区二区| 91污在线观看| 久久综合999| 国产一区二区不卡| 欧美xxxxxxxx| 一个色妞综合视频在线观看| 国产成人免费视频网站| 久久亚洲免费视频| 精品一区二区国语对白| 国产亚洲精品福利| 成人小视频免费观看| 中国av一区二区三区| 不卡高清视频专区| 亚洲精品国产精华液| 欧美日韩精品欧美日韩精品一| 亚洲福中文字幕伊人影院| 欧美日韩免费高清一区色橹橹| 亚洲无线码一区二区三区| 欧美日韩久久不卡| 国产精品亚洲成人| 亚洲美女淫视频| 91精品国产福利| 免费高清成人在线| 亚洲三级免费观看| 日韩一级黄色片| 色综合久久综合网| 日本不卡一二三| 久久综合九色综合97婷婷女人 | 欧美日韩成人高清| 国产成人免费高清| 中文字幕视频一区| 日韩一区二区在线播放| 波多野结衣中文一区| 琪琪久久久久日韩精品| 国产精品不卡一区| 欧美成人综合网站| 99久久伊人精品| 国产91精品在线观看| 男男成人高潮片免费网站| 久久精品亚洲乱码伦伦中文 | 99久久伊人精品| 国产成人免费视频网站 | 国产美女视频91| 亚洲一区二区在线免费观看视频| 久久久久久久电影| 欧美成人激情免费网| 欧美一区二区三区四区高清| 91女厕偷拍女厕偷拍高清| 国产不卡免费视频| 精品一区二区三区的国产在线播放| 午夜精品久久久久久久99樱桃| 一区二区成人在线观看| 亚洲色图.com| 亚洲国产高清aⅴ视频| 国产欧美一区在线| 中文字幕一区二区三区在线观看| 日本一区二区在线不卡| 国产亚洲精久久久久久| 国产欧美日韩在线视频| 欧美高清一级片在线观看| 国产欧美日韩不卡| 国产精品久久精品日日| 国产精品不卡一区| 亚洲色图制服诱惑| 亚洲高清视频在线| 国产一区二三区好的| 成人短视频下载| 91高清视频在线| 日韩区在线观看| 亚洲伦理在线精品| 天堂成人国产精品一区| 国产在线视视频有精品| 成人av免费在线| 日韩精品一区二区在线| 国产精品视频yy9299一区| 亚洲综合视频在线观看| 免费观看30秒视频久久| 国产盗摄视频一区二区三区| 日本亚洲欧美天堂免费| 国产精品一二三在| 欧美中文字幕不卡| 中文字幕成人在线观看| 亚洲一区二区三区美女| 麻豆精品久久久| 色综合激情久久| 国产婷婷色一区二区三区四区| 亚洲精品国久久99热| 国产精品影视天天线| 欧美自拍偷拍午夜视频| 亚洲三级在线播放| 国产成+人+日韩+欧美+亚洲| 日韩女优视频免费观看| 亚洲成人激情社区| 色综合久久中文字幕综合网| 国产精品色一区二区三区| 久久99精品久久久久婷婷| 欧美一区二区三区视频在线| 首页国产欧美日韩丝袜| 欧美色电影在线| 亚洲欧美偷拍三级| 99精品热视频| 亚洲午夜影视影院在线观看| 欧美日本高清视频在线观看| 亚洲一区在线看|