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

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

?? imageprocessing.c

?? 學(xué)習(xí)跟蹤的好程序
?? C
字號(hào):
/* imageProcessing.cpp : image processing for mean shift tracking * Bob Collins  Carnegie Mellon University  Aug 1, 2001 */ //#include "stdafx.h"  #include <stdio.h>#include "globaldata.h"
//------------------------------------------------------------void separatePlanes(unsigned char *src, 		    unsigned char *dest, int nr, int nc){  unsigned char *pr, *pg, *pb;  const unsigned char *p = src;  int size = nr*nc, i;  pr = dest;  pg = dest + size;  pb = pg + size;  for (i=0;i<size;i++)    {      *pr++ = *p++;      *pg++ = *p++;      *pb++ = *p++;    }}void mergePlanes(unsigned char *src, unsigned char *dest, int nr, int nc){  const unsigned char *pr, *pg, *pb;  unsigned char *p = dest;  int size = nr*nc, i;  pr = src;  pg = src + size;  pb = pg + size;  for (i=0;i<size;i++)    {      *p++ = *pr++;      *p++ = *pg++;      *p++ = *pb++;    }}void crosshair(unsigned char *image, int nrows, int ncols, int numbands, int r, int c){  int i,b;  unsigned char *ptr;  for (b=0; b < numbands; b++, image += ncols * nrows) {	    ptr = image + r*ncols;    for (i=0; i < ncols; i++, ptr++) {      *(ptr-ncols) = 0; *ptr = 255; *(ptr+ncols) = 0;    }    ptr = image + (r-c/2)*ncols;    for (i=0; i < ncols; i++, ptr++) {      *(ptr-ncols) = 0; *ptr = 255; *(ptr+ncols) = 0;    }    ptr = image + (r+c/2)*ncols;    for (i=0; i < ncols; i++, ptr++) {      *(ptr-ncols) = 0; *ptr = 255; *(ptr+ncols) = 0;    }        ptr = image + c;    for (i=0; i < nrows; i++, ptr+=ncols) {      *(ptr-1) = 0; *ptr = 255; *(ptr+1) = 0;    }    ptr = image + c/2;    for (i=0; i < nrows; i++, ptr+=ncols) {      *(ptr-1) = 0; *ptr = 255; *(ptr+1) = 0;    }    ptr = image + c + c/2;    for (i=0; i < nrows; i++, ptr+=ncols) {      *(ptr-1) = 0; *ptr = 255; *(ptr+1) = 0;    }      }  return;}void dbox(unsigned char *image, int nrows, int ncols, int numbands, 	  int row, int col, int hrow, int hcol){  unsigned char *ptr;  int b,r,c,srow,erow,scol,ecol;  srow = row - hrow; if (srow < 1) srow = 1;    scol = col - hcol; if (scol < 1) scol = 1;    erow = row + hrow; if (erow >= (nrows-1)) erow = nrows-2;    ecol = col + hcol; if (ecol >= (ncols-1)) ecol = ncols-2;      for (b=0; b < numbands; b++, image += ncols * nrows) {	    ptr = image + (srow-1)*ncols + scol-1;    for (c = scol-1; c <= ecol+1; c++, ptr++) *ptr = 0;    ptr = image + (srow)*ncols + scol-1;    for (c = scol-1; c <= ecol+1; c++, ptr++) *ptr = 255;    ptr = image + (srow+1)*ncols + scol-1;    for (c = scol-1; c <= ecol+1; c++, ptr++) *ptr = 0;    ptr = image + (erow-1)*ncols + scol-1;    for (c = scol-1; c <= ecol+1; c++, ptr++) *ptr = 0;    ptr = image + (erow)*ncols + scol-1;    for (c = scol-1; c <= ecol+1; c++, ptr++) *ptr = 255;    ptr = image + (erow+1)*ncols + scol-1;    for (c = scol-1; c <= ecol+1; c++, ptr++) *ptr = 0;    ptr = image + (srow)*ncols + scol;    for (r = srow; r <= erow; r++, ptr+=ncols) {      *(ptr-1) = 0; *ptr = 255; *(ptr+1) = 0;    }    ptr = image + (srow)*ncols + ecol;    for (r = srow; r <= erow; r++, ptr+=ncols) {      *(ptr-1) = 0; *ptr = 255; *(ptr+1) = 0;    }  }  return;}//======================================================================// COMPUTING GRADIENTS USING SOBEL OPERATOR// note: reduces width and height by 2 // image is single plane (greyscale)// Dx and Dy values are scaled by 16 // Gaussian kernel as integer values, that is // filt = 6*d[n] + 4*(d[n-1]+d[n+1]) + 1*(d[n-2]+d[n+2]) #define G0  6#define G1  4#define G2  1#define GSUM 16// vertical Gaussian kernel assuming odd-row interpolation// (to avoid interlace jaggedness).  That is, the above   // formula with d[n-1] = (d[n]+d[n-2])/2                  //          and d[n+1] = (d[n]+d[n+2])/2                  // and thus       filt = 10*d(n) + 3*(d[n-2]+d[n+2])      #define GI0 10#define GI1  3void sobel_grad_filter(unsigned char *image, int xsize, int ysize, int deinterlace,  		       unsigned char *smoo, short int *Dx, short int *Dy, int *temp){  unsigned char  *dptr, *dp;  int H0,H1,H2,V0,V1,V2;  int *tptr, *tp, *rptr, *rp;  int *quad1, *quad2;  int x,y,xsize2,ysize2, v, h, d1, d2;  xsize2 = xsize / 2;  ysize2 = ysize / 2;  quad1 = temp;  quad2 = temp + xsize2*ysize2;  H0=G0; H1=G1; H2=G2;  if (deinterlace) {	  V0=GI0; V1=0; V2=GI1;}  else {	  V0=G0; V1=G1; V2=G2;}  // Gaussian smoothing   dptr = image;  tptr = quad2;  for (y=0; y < ysize2; y++, dptr+=(xsize+xsize), tptr+=xsize2) {	dp = dptr; 	*tptr = GSUM * (*dp);  // first column    for (x=2, tp=tptr+1, dp=dptr+2; x < xsize2; x++, tp++, dp+=2) {      *tp = H0 * (*dp) +            H1 * (*(dp-1) + *(dp+1)) +            H2 * (*(dp-2) + *(dp+2));      }    *tp= GSUM * (*dp);    // last column    }                    tptr = quad2;  rptr = quad1;  for (x=0, tp=tptr, rp=rptr; x < xsize2; x++, tp++, rp++)  //first row	  *rp = *tp;    tptr += xsize2;  rptr += xsize2;  for (y=2; y < ysize2; y++, rptr+=xsize2, tptr+=xsize2) {    for (x=0, tp=tptr, rp=rptr; x < xsize2; x++, tp++, rp++) {       *rp = (V0 * (*tp) + 		      V1 * (*(tp-xsize2) + *(tp+xsize2)) +			  V2 * (*(tp-xsize) + *(tp+xsize))) >> 4;       }    }  for (x=0, tp=tptr, rp=rptr; x < xsize2; x++, tp++, rp++) // last row     *rp = *tp;    //copy to smoothed image  tp = quad1;  dp = smoo;  for (x=0; x < xsize2*ysize2; x++)	  *dp++ = (*tp++) >> 4;  if ((Dx != NULL) && (Dy != NULL)) {    //now compute directional derivatives    tp = quad1;    for (x=0; x < xsize2; x++) { // first row	  *Dx++ = *Dy++ = 0;  	  tp++;	}    for (y=2; y < ysize2; y++) {	  *Dx++ = *Dy++ = 0; // first column	  tp++;	  for (x=2; x < xsize2; x++) {		  h = *(tp+1) - *(tp-1);		  v = *(tp+xsize2) - *(tp-xsize2);		  d1 = *(tp-xsize2+1) - *(tp+xsize2-1);		  d2 = *(tp+xsize2+1) - *(tp-xsize2-1);		  // sobel operator		  *Dx = (h + h + d1 + d2) >> 6;  //2^4 (grad) * 2^2 (sobel)		  *Dy = (v + v - d1 + d2) >> 6;		  tp++; Dx++; Dy++;	  }	  *Dx++ = *Dy++ = 0; // last column	  tp++;	}    for (x=0; x < xsize2; x++) { // last row	  *Dx++ = *Dy++ = 0;	  tp++;	}  }  return;}//======================================================================// HISTOGRAM EQUALIZATION AND QUANTIZATION// compute quantization map. step 1) intensity histogram, // step 2) cumulative intensity, step 3) quantization map.void quantization_map (unsigned char *image, int nrows, int ncols,                        unsigned char *newvaltable, int numgreyvals){  int i, numpix, accum;  int histogram[256], cumhist[256];  unsigned char *dptr;  for (i=0; i < 256; i++) histogram[i] = 0;  numpix = nrows*ncols;  dptr = image;  for (i=0; i < numpix; i++, dptr++)     histogram[*dptr]++;  //skip 0 and 255 values (black borders and saturated pixels)  accum = 0;  for (i=1; i < 255; i++)    cumhist[i] = (accum += histogram[i]);  newvaltable[0] = 0;  newvaltable[255] = numgreyvals-1;  for (i=1; i < 255; i++){    newvaltable[i] = (unsigned char)((numgreyvals-1)*((float)cumhist[i]/(float)accum)+0.5);	  }
  return;}// perform histogram equalization and quantizationvoid perform_quantization (unsigned char *image, int nrows, int ncols,                           unsigned char *newvaltable){  int i, numpix;  unsigned char *dptr;  numpix = nrows*ncols;  dptr = image;  for (i=0; i < numpix; i++, dptr++)    *dptr = newvaltable[*dptr];	  return;}void gray_histeq (unsigned char *image, int nrows, int ncols, int numgreyvals){  unsigned char newvaltable[256];   quantization_map(image, nrows, ncols, newvaltable, numgreyvals);  perform_quantization(image,nrows,ncols,newvaltable);  return;}static unsigned char QUANTVALTABLE1[256];static unsigned char QUANTVALTABLE2[256];static unsigned char QUANTVALTABLE3[256];void color_index_image (unsigned char *colorimage, int nrows, int ncols,			unsigned char *indeximage, int reinitquant){	unsigned char *red, *green, *blue, *index;	unsigned char *tmpBG, *tmpGR, *tmpBGR, *r, *g, *b;	int nsize, i;	nsize = nrows*ncols;	r = red = colorimage; 	g = green = colorimage+nsize; 	b = blue = colorimage+2*nsize;	tmpBG = NGItemp;	tmpGR = NGItemp+nsize;	tmpBGR = NGItemp+2*nsize;	for (i = 0; i < nsize; i++) {		*tmpBG++ = (unsigned char)(((float)*b - (float)*g + 255.0)/2.0);
		*tmpGR++ = (unsigned char)(((float)*g - (float)*r + 255.0)/2.0);
		*tmpBGR++ = (unsigned char)(((float)*b + (float)*g + (double)*r)/3.0);
//		*tmpBG++ = *r;
//		*tmpGR++ = *g;
//		*tmpBGR++ = *b; 
		r++; g++; b++;	}	tmpBG = NGItemp;	tmpGR = NGItemp+nsize;	tmpBGR = NGItemp+2*nsize;	if (reinitquant) {		quantization_map(tmpBG, nrows, ncols, QUANTVALTABLE1, 8);		quantization_map(tmpGR, nrows, ncols, QUANTVALTABLE2, 8);		quantization_map(tmpBGR, nrows, ncols, QUANTVALTABLE3, 4);	}

	//debug print out images
//	if(0)
//	{
//		FILE *file;
//		char *filename;
//		int row, col;
//		int offset;
//
//		filename = "result/tmpBGR.txt";
//		file = fopen(filename, "w");
//		for (row=0; row<nrows; row++){			
//			for (col=0; col<ncols; col++){
//				offset = row*ncols+col;
//				fprintf(file, "%3d ", *(tmpBGR+offset));
//			}
//			fprintf(file, "\n");
//		}
//		fclose(file);
//		filename = "result/tmpGR.txt";
//		file = fopen(filename, "w");
//		for (row=0; row<nrows; row++){			
//			for (col=0; col<ncols; col++){
//				offset = row*ncols+col;
//				fprintf(file, "%3d ", *(tmpGR+offset));
//			}
//			fprintf(file, "\n");
//		}
//		fclose(file);
//		filename = "result/tmpBG.txt";
//		file = fopen(filename, "w");
//		for (row=0; row<nrows; row++){			
//			for (col=0; col<ncols; col++){
//				offset = row*ncols+col;
//				fprintf(file, "%3d ", *(tmpBG+offset));
//			}
//			fprintf(file, "\n");
//		}
//		fclose(file);
//	}
	perform_quantization(tmpBG,nrows,ncols,QUANTVALTABLE1);	perform_quantization(tmpGR,nrows,ncols,QUANTVALTABLE2);	perform_quantization(tmpBGR,nrows,ncols,QUANTVALTABLE3);

//	//debug print out images
//	if(0)
//	{
//		FILE *file;
//		char *filename;
//		int row, col;
//		int offset;
//
//		filename = "result/tmpBGR.txt";
//		file = fopen(filename, "w");
//		for (row=0; row<nrows; row++){			
//			for (col=0; col<ncols; col++){
//				offset = row*ncols+col;
//				fprintf(file, "%3d ", *(tmpBGR+offset));
//			}
//			fprintf(file, "\n");
//		}
//		fclose(file);
//		filename = "result/tmpGR.txt";
//		file = fopen(filename, "w");
//		for (row=0; row<nrows; row++){			
//			for (col=0; col<ncols; col++){
//				offset = row*ncols+col;
//				fprintf(file, "%3d ", *(tmpGR+offset));
//			}
//			fprintf(file, "\n");
//		}
//		fclose(file);
//		filename = "result/tmpBG.txt";
//		file = fopen(filename, "w");
//		for (row=0; row<nrows; row++){			
//			for (col=0; col<ncols; col++){
//				offset = row*ncols+col;
//				fprintf(file, "%3d ", *(tmpBG+offset));
//			}
//			fprintf(file, "\n");
//		}
//		fclose(file);
//	}
	index = indeximage;	for (i=0; i < nsize; i++){ 		*index = (unsigned char)(((*tmpBGR++)*8 + (*tmpGR++))*8 + (*tmpBG++));		
		index ++;
	}
	//debug print out images
	if(0)
	{
		FILE *file;
		char *filename;
		int row, col;
		int offset;

		filename = "result/indeximage.txt";
		file = fopen(filename, "w");
		for (row=0; row<243; row++){			
			for (col=0; col<320; col++){
				offset = row*320+col;
				fprintf(file, "%3d ", *(indeximage+offset));
			}
			fprintf(file, "\n");
		}
	}
  return;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本乱大交xxxxx| 日韩一区日韩二区| 91麻豆精品国产91久久久久久 | 欧美视频在线一区| www.日韩大片| jlzzjlzz亚洲日本少妇| 国产a精品视频| 国产精品一区专区| 国产九色sp调教91| 国产v综合v亚洲欧| 成人av免费在线播放| www精品美女久久久tv| 精品女同一区二区| 2021久久国产精品不只是精品| 日韩欧美视频一区| 日韩精品一区二区三区视频| 欧美mv日韩mv国产网站| 欧美精品一区二区三| 久久久久久9999| 欧美国产精品劲爆| 成人免费一区二区三区在线观看| 中文字幕日本乱码精品影院| ㊣最新国产の精品bt伙计久久| 亚洲色欲色欲www| 亚洲综合成人在线| 亚洲一级不卡视频| 日本欧美一区二区三区乱码| 久久97超碰国产精品超碰| 国产成人在线视频网站| 成人av电影在线| 色偷偷久久人人79超碰人人澡| 欧美伊人精品成人久久综合97| 在线成人av网站| 欧美精品一区二区久久久| 国产欧美日韩一区二区三区在线观看| 国产精品高潮呻吟| 亚洲高清视频中文字幕| 日韩精品色哟哟| 国产精品一二三区| 色一区在线观看| 欧美一级艳片视频免费观看| 国产亚洲女人久久久久毛片| 亚洲天堂久久久久久久| 日韩国产欧美三级| 高清视频一区二区| 欧美亚洲国产一区二区三区va | 亚洲一区二区三区在线看| 亚洲一区二区视频| 国产尤物一区二区| 色婷婷av一区二区三区之一色屋| 884aa四虎影成人精品一区| 国产亚洲欧洲997久久综合| 亚洲精品国产第一综合99久久 | 国模套图日韩精品一区二区| 成人午夜看片网址| 欧美高清视频一二三区 | 欧美一区二区三区免费视频| 国产网站一区二区三区| 亚洲一区二区三区激情| 国产精品一区一区| 欧美日韩性生活| 欧美韩日一区二区三区四区| 五月综合激情网| 成人黄色免费短视频| 777色狠狠一区二区三区| 亚洲欧洲国产日本综合| 久久97超碰色| 欧美日韩国产天堂| 亚洲视频在线观看一区| 国内精品视频一区二区三区八戒| 欧美羞羞免费网站| 国产精品每日更新| 国产一区二区福利| 在线播放中文一区| 亚洲日本青草视频在线怡红院 | 亚洲图片激情小说| 久久99精品久久久久久久久久久久| 成人av动漫在线| 日韩一区二区三区电影| 亚洲三级在线看| 美女一区二区久久| 91精品办公室少妇高潮对白| 久久不见久久见中文字幕免费| 成人国产免费视频| 91精品国产色综合久久久蜜香臀| 国产欧美日韩久久| 日本sm残虐另类| 色哦色哦哦色天天综合| 国产午夜精品福利| 91精品啪在线观看国产60岁| 9i在线看片成人免费| 激情综合色丁香一区二区| 色婷婷香蕉在线一区二区| 久久女同性恋中文字幕| 天天综合色天天| 97se亚洲国产综合自在线不卡| 日韩一区二区免费高清| 久久精品在线观看| 蜜臀久久99精品久久久久宅男 | 欧美国产乱子伦| 秋霞成人午夜伦在线观看| 欧洲精品一区二区三区在线观看| 国产三级精品三级在线专区| 日韩精品免费专区| 一本色道久久综合亚洲91| 国产欧美日本一区二区三区| 老司机午夜精品| 欧美精品xxxxbbbb| 一区二区三区在线播放| 成人一级视频在线观看| 久久亚洲精华国产精华液 | 九色综合狠狠综合久久| 欧美日韩一区三区四区| 亚洲三级电影全部在线观看高清| 久久精品99国产国产精| 久久只精品国产| 激情综合色播激情啊| 日韩欧美综合在线| 香蕉成人啪国产精品视频综合网 | 精品第一国产综合精品aⅴ| 青青草伊人久久| 欧美一级夜夜爽| 亚洲成人tv网| 欧美日韩国产123区| 亚洲乱码国产乱码精品精的特点 | 欧美影院精品一区| 亚洲激情男女视频| 色欧美日韩亚洲| 亚洲欧美一区二区不卡| 91麻豆免费观看| 亚洲天堂免费看| 色激情天天射综合网| 亚洲在线观看免费视频| 在线一区二区视频| 午夜视频在线观看一区| 91麻豆国产香蕉久久精品| 视频一区二区三区入口| 日韩一区二区三区四区| 美女爽到高潮91| 久久老女人爱爱| 成人丝袜18视频在线观看| 久久久久久一二三区| 91丝袜美女网| 一区二区高清免费观看影视大全| 欧美婷婷六月丁香综合色| 亚洲美女一区二区三区| 日本高清不卡视频| 最新中文字幕一区二区三区 | 国产激情视频一区二区三区欧美 | 欧美大片国产精品| 国产精品一线二线三线| 国产欧美视频在线观看| 99久久精品情趣| 午夜精品福利一区二区蜜股av | 亚洲一区二区欧美日韩| 欧美日韩国产不卡| 久久99精品国产.久久久久久| 久久亚洲综合av| 欧美伊人久久久久久久久影院| 奇米一区二区三区av| 久久网站热最新地址| 91在线播放网址| 日韩精品久久久久久| 欧美成人video| 国产一区二区主播在线| 亚洲图片欧美一区| 久久网站热最新地址| 色综合天天综合网国产成人综合天 | 久久亚洲免费视频| 一本久久a久久精品亚洲| 丝袜美腿亚洲一区| 久久精品男人的天堂| 欧洲激情一区二区| 国产一区二区三区| 日日骚欧美日韩| 国产精品私人自拍| 欧美日韩日日夜夜| 国产剧情一区二区三区| 亚洲电影一级黄| 久久久久久久久一| 91视频你懂的| 国产高清在线精品| 偷拍日韩校园综合在线| 国产精品免费视频一区| 3atv一区二区三区| 成人av网站在线观看免费| 五月开心婷婷久久| 国产欧美一区二区精品久导航| 欧美一级片免费看| 色综合激情久久| 国产成人小视频| 青草国产精品久久久久久| 国产精品久久久久久久久快鸭| 欧美成人高清电影在线| 欧美日韩一级二级| 国产成人综合在线| 卡一卡二国产精品| 悠悠色在线精品| 亚洲欧美福利一区二区| 国产亚洲成av人在线观看导航|