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

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

?? improc.c

?? 圖像處理軟件,功能比較基礎
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <math.h>
#include <stdlib.h>
#include <search.h>

#include "imgproc.h"



static int SortFunction(const unsigned char *p1,const unsigned char *p2)
{
  return(*p1 - *p2);
};

unsigned char **Median(unsigned char **Image,short YStart,
			           short XStart,short Row,short Col,short MaskSize)
{
  short i,j,k,l;
  unsigned char **TemImage,*TemArr;

  TemImage = (unsigned char **)fspace_2d(Row,Col,sizeof(unsigned char));
  TemArr   = (unsigned char *)fspace_1d(MaskSize*MaskSize,sizeof(unsigned char));

  for(i=YStart;i<YStart+MaskSize/2;i++)
    for(j=XStart;j<XStart+Col;j++)
      TemImage[i-YStart][j-XStart] = Image[i][j];

  for(i=YStart+Row-MaskSize/2;i<YStart+Row;i++)
    for(j=XStart;j<XStart+Col;j++)
     TemImage[i-YStart][j-XStart] = Image[i][j];

  for(j=XStart;j<XStart+MaskSize/2;j++)
    for(i=YStart;i<YStart+Row;i++)
      TemImage[i-YStart][j-XStart] = Image[i][j];

  for(j=XStart+Col-MaskSize/2;j<XStart+Col;j++)
    for(i=YStart;i<YStart+Row;i++)
      TemImage[i-YStart][j-XStart] = Image[i][j];

  for(i=YStart;i<YStart+Row-MaskSize/2*2;i++)
    for(j=XStart;j<XStart+Col-MaskSize/2*2;j++)
    {
      for(k=i;k<i+MaskSize;k++)
	for(l=j;l<j+MaskSize;l++)
	  TemArr[(k-i)*MaskSize+(l-j)] = Image[k][l];

//      qsort((void *)TemArr,MaskSize*MaskSize,sizeof(unsigned char),
//	        SortFunction);

      TemImage[i-YStart+MaskSize/2][j-XStart+MaskSize/2] = TemArr[MaskSize*MaskSize/2];
    }

  free(TemArr);

  return(TemImage);
}


unsigned char **Dilation(unsigned char **Image, unsigned char **Model,
			 short IRow, short ICol, short MRow, short MCol,
			 short YCenter, short XCenter)
{
  unsigned char **Result;
  short i,j,k,l;

  Result = (unsigned char **)fspace_2d(IRow,ICol,sizeof(unsigned char));

  for(i=0;i<IRow;i++)
  {
    if ((i-YCenter<0)||(i-YCenter+MRow>=IRow))  continue;

    for(j=0;j<ICol;j++)
    {
      if ((j-XCenter<0)||(j-XCenter+MCol>=ICol))  continue;

      if (Image[i][j]==255)
	for(k=0;k<MRow;k++)
	  for(l=0;l<MCol;l++)
	    if (Model[k][l]==255) Result[i-YCenter+k][j-XCenter+l] = 255;
    }
  }

  return(Result);
}

unsigned char **Erosion(unsigned char **Image, unsigned char **Model,
			short IRow, short ICol, short MRow, short MCol,
			short YCenter, short XCenter)
{
  unsigned char **Result;
  short i,j,k,l,eros_flag;

  Result = (unsigned char **)fspace_2d(IRow,ICol,sizeof(unsigned char));

  for(i=0;i<IRow;i++)
  {
    if ((i-YCenter<0)||(i-YCenter+MRow>=IRow))  continue;

    for(j=0;j<ICol;j++)
    {
      if ((j-XCenter<0)||(j-XCenter+MCol>=ICol))  continue;

      eros_flag = 0;

	for(k=0;(k<MRow)&&(!eros_flag);k++)
	  for(l=0;(l<MCol)&&(!eros_flag);l++)
	    if ((Model[k][l]==255)&&(Image[i-YCenter+k][j-XCenter+l]==0))
	      eros_flag = 1;

	if (!eros_flag) Result[i][j] = 255;
    }
  }

  return(Result);
}

double Entropy(unsigned char** InImg, short YStart, short XStart, 
			  short Row, short Col)
{
    short m,n;
    double LocalEntropy;
    static long int     Hist[256];

	for(m=0;m<256;m++)  Hist[m] = 0;

	for(m=YStart;m<YStart+Row;m++)
	for(n=XStart;n<XStart+Col;n++)
	  Hist[InImg[m][n]]++;

	LocalEntropy = 0.0;
	for(m=0;m<256;m++)
	  if (Hist[m]!=0)
	    LocalEntropy -= (double)Hist[m] / Row / Col
			      * (double)log((double)Hist[m] / Row / Col);
	return(LocalEntropy);
}



/************************  ImageFold  *****************************/
unsigned char **ImageFold(unsigned char **Image,int Row,int Col,int Margin)
{
  unsigned char **FoldedImage;
  int           i,j;

  FoldedImage = (unsigned char **)fspace_2d(Row+2*Margin,Col+2*Margin,
                                            sizeof(unsigned char));

  for(i=0;i<Row;i++)
    for(j=0;j<Col;j++)
      FoldedImage[i+Margin][j+Margin] = Image[i][j];

  for(i=Margin;i<Col+Margin;i++)
    for(j=0;j<Margin;j++)
    {
      FoldedImage[Margin-j-1][i]   = FoldedImage[Margin+j][i];
      FoldedImage[Row+Margin+j][i] = FoldedImage[Row+Margin-j-1][i];
    }
  for(i=0;i<Row+2*Margin;i++)
    for(j=0;j<Margin;j++)
    {
      FoldedImage[i][Margin-j-1]   = FoldedImage[i][Margin+j];
      FoldedImage[i][Col+Margin+j] = FoldedImage[i][Col+Margin-j-1];
    }

  return(FoldedImage);
}

/***************************  iMax1d  *****************************/
/*  To get the maximum of a 1_dimension integer array  */
/*  NOT USED  */
/*
int ucMax1d(unsigned char *a,int col,int margin)
{
  register int i;
  int max = a[1];

  for(i=1;i<col-1;i++)
    if (max<a[i]) max = a[i];
  if (margin==0) {
    if (max<a[0]) max = a[0];
    if (max<a[col-1]) max = a[col-1];
  }
  return(max);
}
*/

/***************************  ucMax2d    ******************************/
/*  To get the maximum and the minimum of a 2_dimension character array  */
int ucMax2d(unsigned char **a,int row,int col,int margin,int *minp)
{
  register int i,j;
  int          max,min,start_i,end_i,start_j,end_j;

  max = min = a[1][1];
  start_i = start_j = margin;
  end_i = row - margin;
  end_j = col - margin;

  for(i=start_i;i<end_i;i++)
    for(j=start_j;j<end_j;j++) {
      if (max<a[i][j])
        max = a[i][j];
      else if (min>a[i][j]) min = a[i][j];
    }

  *minp = min;
  return(max);
}

/************************  ucGetSquareSum  *********************************/
float ucGetSquareSum(unsigned char **Image,int YStart,int XStart,int Row,
                     int Col)
{
  int   i,j;
  float SquareSum = 0.0;

  for(i=YStart;i<Row+YStart;i++)
    for(j=XStart;j<Col+XStart;j++)
      SquareSum += (float)Image[i][j] * Image[i][j];

  return(SquareSum);
}

/************************  ucGetZSquareSum  *********************************/
float ucGetZSquareSum(unsigned char **Image,int YStart,int XStart,int Row,
                      int Col,float ImageAve)
{
  int   i,j;
  float ZSquareSum = 0.0;

  for(i=YStart;i<Row+YStart;i++)
    for(j=XStart;j<Col+XStart;j++)
      ZSquareSum += (Image[i][j] - ImageAve) * (Image[i][j] - ImageAve);

  return(ZSquareSum);
}

/*************************  ucAverage      ********************************/
/*  To get the average of a 2_dimension character array  */
/*  from (YStart,XStart) with (row,col)                  */
float ucAverage(unsigned char **a,int YStart,int XStart,int row,int col,
                int margin)
{
  register int i,j;
  int start_i,end_i,start_j,end_j;
  float sum = 0.0;

  start_i = YStart + margin;
  start_j = XStart + margin;
  end_i   = row + YStart - margin;
  end_j   = col + XStart - margin;

  for(i=start_i;i<end_i;i++)
    for(j=start_j;j<end_j;j++)
      sum += a[i][j];

  return(sum/((float)(row-2*margin)*(col-2*margin)));
}

/*****************************  ucDeviation   **************************/
/*  To get the deviation of a 2_dimension character array  */
float ucDeviation(unsigned char **a,int YStart,int XStart,int row,int col,
                  float average,int margin)
{
  register int i,j;
  int start_i,end_i,start_j,end_j;
  long size = (long)(row - margin * 2) * (col - margin * 2);
  double square_sum = 0.0;

  start_i = YStart + margin;
  start_j = XStart + margin;
  end_i   = row + YStart - margin;
  end_j   = col + XStart - margin;

  for(i=start_i;i<end_i;i++)
    for(j=start_j;j<end_j;j++)
      square_sum += (double)a[i][j] * a[i][j];

  return((float)sqrt((square_sum-size*average*average)/(size-1.0)));
}

/*  To get the maximum and the minimum of a 2_dimension integer array  */
int iMax2d(int **a,int row,int col,int margin,int *minp)
{
  register int i,j;
  int          max,min,start_i,end_i,start_j,end_j;

  max = min = a[1][1];
  start_i = start_j = margin;
  end_i = row - margin;
  end_j = col - margin;

  for(i=start_i;i<end_i;i++)
    for(j=start_j;j<end_j;j++) {
      if (max<a[i][j])
        max = a[i][j];
      else if (min>a[i][j]) min = a[i][j];
    }

  *minp = min;
  return(max);
}

/************************  iGetSquareSum  *********************************/
float iGetSquareSum(int **Image,int YStart,int XStart,int Row,int Col)
{
  int   i,j;
  float SquareSum = 0.0;

  for(i=YStart;i<Row+YStart;i++)
    for(j=XStart;j<Col+XStart;j++)
      SquareSum += (float)Image[i][j] * Image[i][j];

  return(SquareSum);
}

/************************  iGetZSquareSum  *********************************/
float iGetZSquareSum(int **Image,int YStart,int XStart,int Row,int Col,float ImageAve)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区999| 婷婷亚洲久悠悠色悠在线播放| 精品一区二区在线观看| 日韩一区二区三区四区五区六区| 日韩福利电影在线观看| 欧美成人猛片aaaaaaa| 久久丁香综合五月国产三级网站| 精品国产一区二区国模嫣然| 国产精品一区二区三区乱码| 国产精品国产三级国产a| 日本道精品一区二区三区| 亚洲成人午夜电影| 欧美精品一区二区在线观看| 成人小视频免费在线观看| 亚洲日本免费电影| 91精品国产综合久久久久久| 国产乱色国产精品免费视频| 最新不卡av在线| 欧美日本韩国一区二区三区视频| 美腿丝袜亚洲综合| 国产精品美女www爽爽爽| 欧美私人免费视频| 精品一区二区精品| 亚洲综合清纯丝袜自拍| 精品国产一区二区三区av性色| 成人午夜激情视频| 性做久久久久久免费观看| 欧美成人精品二区三区99精品| 大白屁股一区二区视频| 丝袜a∨在线一区二区三区不卡| 日韩欧美一二区| 91美女片黄在线观看| 日韩精品一二三区| 国产精品毛片大码女人| 在线91免费看| 97se亚洲国产综合自在线| 日产国产欧美视频一区精品| 国产精品色婷婷| 欧美成人一区二区三区片免费 | 日产精品久久久久久久性色| 久久伊人蜜桃av一区二区| 在线一区二区视频| 国产精品亚洲第一区在线暖暖韩国| 亚洲一区二区三区四区在线| 久久久亚洲欧洲日产国码αv| 欧美亚洲丝袜传媒另类| 国产成人综合在线播放| 香蕉影视欧美成人| 亚洲欧美日本韩国| 欧美国产精品v| 日韩视频免费直播| 欧美亚洲高清一区二区三区不卡| 国产999精品久久久久久绿帽| 日日噜噜夜夜狠狠视频欧美人| 国产精品久久久久久久蜜臀| 精品日韩在线一区| 欧美日韩亚洲丝袜制服| 91老师片黄在线观看| 粉嫩绯色av一区二区在线观看| 蜜臀av性久久久久av蜜臀妖精 | 国产欧美日韩精品a在线观看| 欧美高清你懂得| 一本到高清视频免费精品| 成人午夜激情片| 国产mv日韩mv欧美| 国产一区在线精品| 久草精品在线观看| 麻豆一区二区99久久久久| 午夜日韩在线观看| 一个色妞综合视频在线观看| 中文字幕一区二区三区在线观看| 精品福利av导航| 久久久美女毛片| 久久久久久久精| 欧美激情一区三区| 国产精品亲子乱子伦xxxx裸| 欧美激情综合五月色丁香小说| 国产欧美日韩在线观看| 久久久久99精品国产片| 国产欧美一二三区| 亚洲欧洲一区二区三区| 国产精品二三区| 亚洲男人的天堂在线观看| 亚洲视频一二三区| 亚洲丰满少妇videoshd| 爽好久久久欧美精品| 麻豆免费看一区二区三区| 久久精品国产成人一区二区三区 | 国产成人在线观看| 成人福利视频在线看| 91亚洲大成网污www| 在线观看免费亚洲| 538在线一区二区精品国产| 欧美一区二区三区四区高清| 日韩欧美二区三区| 国产欧美一区二区三区网站| 国产精品动漫网站| 亚洲国产精品久久不卡毛片| 欧美bbbbb| 国v精品久久久网| 97精品国产97久久久久久久久久久久| 色狠狠av一区二区三区| 欧美一区二区三区在线视频| 久久美女艺术照精彩视频福利播放| 国产片一区二区三区| 亚洲一区视频在线观看视频| 日韩国产欧美视频| 国产高清久久久| 欧美中文字幕不卡| 日韩精品资源二区在线| 国产精品免费视频一区| 五月婷婷综合网| 国产激情视频一区二区在线观看 | 国产精品一区二区在线观看不卡 | 久久久久久久久免费| 亚洲婷婷国产精品电影人久久| 一区二区三区四区视频精品免费 | 日韩欧美精品在线视频| 亚洲手机成人高清视频| 久久草av在线| 91免费版在线| 久久综合久久综合久久综合| 亚洲女同女同女同女同女同69| 午夜国产精品一区| 国产宾馆实践打屁股91| 欧美系列一区二区| 中文字幕不卡一区| 欧美aaaaa成人免费观看视频| 顶级嫩模精品视频在线看| 在线综合+亚洲+欧美中文字幕| 国产精品久久久久7777按摩| 日韩黄色片在线观看| 99久久婷婷国产综合精品电影| 欧美刺激午夜性久久久久久久| 亚洲人123区| 成人午夜激情视频| 久久综合色8888| 丝袜美腿成人在线| 日本韩国精品一区二区在线观看| 26uuu亚洲| 青青草视频一区| 欧美午夜一区二区| 日韩理论在线观看| 国产99久久久国产精品潘金| 欧美一级日韩一级| 天天综合天天综合色| 91麻豆国产在线观看| 国产女人aaa级久久久级 | 麻豆成人久久精品二区三区红 | 久久久久国产精品厨房| 美女精品一区二区| 91精品在线麻豆| 亚洲国产日日夜夜| 欧美伊人久久久久久久久影院 | 午夜av一区二区| 欧美在线制服丝袜| 中文字幕亚洲视频| 成人av网站在线观看| 国产欧美一区二区在线观看| 国产精品亚洲а∨天堂免在线| 精品福利一区二区三区免费视频| 青青草精品视频| 日韩欧美久久一区| 激情综合五月天| 精品国产精品一区二区夜夜嗨| 日本美女一区二区三区| 欧美妇女性影城| 轻轻草成人在线| 精品久久久久久最新网址| 狠狠久久亚洲欧美| 久久男人中文字幕资源站| 国产成人综合亚洲91猫咪| 国产偷国产偷亚洲高清人白洁| 国产91对白在线观看九色| 欧美国产欧美综合| av不卡一区二区三区| 亚洲啪啪综合av一区二区三区| 972aa.com艺术欧美| 亚洲一区二区三区三| 7777女厕盗摄久久久| 激情小说亚洲一区| 国产色综合久久| 91视频xxxx| 日韩和的一区二区| 精品成人免费观看| 成人aaaa免费全部观看| 一区二区三区在线看| 欧美老人xxxx18| 狠狠色丁香久久婷婷综合丁香| 国产精品理论片| 欧美日韩高清不卡| 久久不见久久见中文字幕免费| 欧美极品美女视频| 欧美伊人久久久久久久久影院| 奇米色777欧美一区二区| 国产日产欧美一区二区视频| 91一区二区在线| 日韩1区2区3区| 国产精品传媒在线| 337p亚洲精品色噜噜噜|