Esempio n. 1
0
/*提高H3_1*/
int H3_1()
{
    //实现BitPlane保存信息
    char fname[file_name_len];
    struct IMG image;
    struct IMG * pimg=ℑ
    char str[str_info_len];
    int bit=7;//第1比特用来当作水印信息,因为低频率人眼不敏感
    //使用bit=7时,打开图片可以看到图片最上面的图片颜色信息有明显的痕迹
    //lena
    strcpy(str,"Lena!This is the DIP course.");
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    BitPlane(pimg,str,bit);
    WritePPM("lena_bitplane.ppm",pimg);
    str[0]=0;//清空
    unBitPlane(pimg,str,bit);
    printf("加密信息是: %s \n",str);

    //Parrots
    strcpy(str,"Parrots!This is the DIP course.");
    strcpy(fname,"Parrots.ppm");
    ReadPPM(fname,pimg);
    BitPlane(pimg,str,bit);
    WritePPM("Parrots_bitplane.ppm",pimg);
    str[0]=0;//清空
    unBitPlane(pimg,str,bit);
    printf("加密信息是: %s \n",str);
    return 0;
}
Esempio n. 2
0
//函数定义
int H5()
{
    char fname[file_name_len];
    struct IMG image;
    struct IMG * pimg=ℑ
    struct Template tml;//定义模版
    struct Template * ptml=&tml;
    int * arr=NULL;
    char ch[1024];
    char * pch=ch;
    //lena-------------------------
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    arr=(int *)malloc(sizeof(int)*3*3);//申请一个3*3的模版矩阵
    //锐化模版
    strcpy(ch,"Harpening 锐化模版导入成功");
    /*  0  -1  0
     * -1  5  -1
     *  0  -1  0
     * */
    //arr[0][0]=0;arr[0][1]=-1;arr[0][2]=0;
    //arr[1][0]=-1;arr[1][1]=5;arr[1][2]=-1;
    //arr[2][0]=0;arr[2][1]=-1;arr[2][2]=0;
    arr[0]=0; arr[1]=-1; arr[2]=0;
    arr[3]=-1; arr[4]=5; arr[5]=-1;
    arr[6]=0; arr[7]=-1; arr[8]=0;
    ptml->square=arr;
    ptml->name=pch;
    ptml->x=3;
    ptml->y=3;
    ptml->max=1;
    Convolution(pimg,ptml);
    strcpy(fname,"锐化后的lena.ppm");
    WritePPM(fname,pimg);
    WritePPM(fname,pimg);
    //边缘检测
    FreePPM(pimg);
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    strcpy(ch,"Edge Detection边缘检测Sobel算子");
    /* -1  0  1
     * -2  0  2
     * -1  0  1
     * */
    arr[0]=-1; arr[1]=0; arr[2]=1;
    arr[3]=-2; arr[4]=0; arr[5]=2;
    arr[6]=-1; arr[7]=0; arr[8]=1;
    ptml->square=arr;
    ptml->name=pch;
    ptml->x=3;ptml->y=3;
    ptml->max=4;
    Convolution(pimg,ptml);
    strcpy(fname,"边缘检测后的lena.ppm");
    WritePPM(fname,pimg);
    free(arr);
    //lena--------------------------
    return 0;
}
Esempio n. 3
0
int AmmCaptcha_initialize(char * font,char * dictFilename)
{
  int retres=0;
  if (font==0) { retres=ReadPPM(&fontRAW,"font.ppm",0); } else
               { retres=ReadPPM(&fontRAW,font,0); }
  if (!retres) { fprintf(stderr,"Could not read font for captcha system\n"); return 0; }

  srand (time(NULL));
  return AmmCaptcha_loadDictionary(dictFilename);
}
Esempio n. 4
0
int R2Image::
Read(const char *filename)
{
  // Initialize everything
  if (pixels) { delete [] pixels; pixels = NULL; }
  width = height = 0;

  // Parse input filename extension
  const char *input_extension;
  if (!(input_extension = strrchr(filename, '.'))) {
    fprintf(stderr, "Input file has no extension (e.g., .jpg).\n");
    return 0;
  }
  
  // Read file of appropriate type
  if (!strncmp(input_extension, ".bmp", 4)) return ReadBMP(filename);
  else if (!strncmp(input_extension, ".ppm", 4)) return ReadPPM(filename);
  else if (!strncmp(input_extension, ".pfm", 4)) return ReadPFM(filename);
  else if (!strncmp(input_extension, ".jpg", 4)) return ReadJPEG(filename);
  else if (!strncmp(input_extension, ".jpeg", 5)) return ReadJPEG(filename);
  else if (!strncmp(input_extension, ".tif", 4)) return ReadTIFF(filename);
  else if (!strncmp(input_extension, ".tiff", 5)) return ReadTIFF(filename);
  else if (!strncmp(input_extension, ".raw", 4)) return ReadRAW(filename);
  else if (!strncmp(input_extension, ".grd", 4)) return ReadGRD(filename);
  
  // Should never get here
  fprintf(stderr, "Unrecognized image file extension");
  return 0;
}
Esempio n. 5
0
/*H3_2*/
int H3_2()
{
    //实现二值化
    char fname[file_name_len];
    struct IMG image;
    struct IMG * pimg=ℑ
    //lena
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    BinaryZationPPM(pimg,2);
    WritePPM("lena_binaryzation.ppm",pimg);
    //Parrots
    strcpy(fname,"Parrots.ppm");
    ReadPPM(fname,pimg);
    BinaryZationPPM(pimg,4);
    WritePPM("Parrots_binaryzation.ppm",pimg);
    return 0;
}
Esempio n. 6
0
/*作业二*/
int H2()
{
    char fname[file_name_len];
    struct IMG image;
    struct IMG * pimg=ℑ
    //lena
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    NegativePPM(pimg);
    strcpy(fname,"lena_m.ppm");
    WritePPM(fname,pimg);
    //parrots 
    strcpy(fname,"Parrots.ppm");
    ReadPPM(fname,pimg);
    NegativePPM(pimg);
    strcpy(fname,"Parrots_m.ppm");
    WritePPM(fname,pimg);
    return 0;
}
Esempio n. 7
0
int H3_3()
{
    /*实现图片的复制,因为以前对图片的操作都是在原图片进行的操作。所以可以用这个函数进行图片的复制*/
    char fname[file_name_len];
    struct IMG image;
    struct IMG image2;
    struct IMG * pimg=ℑ
    struct IMG * pimg2=&image2;
    //lena
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    CopyPPM(pimg,pimg2);
    WritePPM("lena_copy.ppm",pimg2);
    //Parrots
    strcpy(fname,"Parrots.ppm");
    ReadPPM(fname,pimg);
    CopyPPM(pimg,pimg2);
    WritePPM("Parrots_copy.ppm",pimg2);
    return 0;
}
int createTemplateDevice(int devID,char * devName,unsigned int width,unsigned int height,unsigned int framerate)
{
  if ( ( device[devID].templateWIDTH < width ) &&  ( device[devID].templateHEIGHT < height ) )
   {
        device[devID].templateHEIGHT=height;
        device[devID].templateWIDTH=width;
   }

   if (devName==0) { strcpy(device[devID].readFromDir,""); } else
     {
       if (strlen(devName)==0)  { strcpy(device[devID].readFromDir,""); } else
                                { strncpy(device[devID].readFromDir,devName,MAX_DIR_PATH);  }
     }

  unsigned int widthInternal; unsigned int heightInternal;

  char file_name_test[1024];
  sprintf(file_name_test,"frames/%s/colorFrame_%u_%05u.pnm",device[devID].readFromDir,devID,0);
  char * tmpColor = ReadPPM(file_name_test,&widthInternal,&heightInternal);
  if ( (widthInternal!=width) || (heightInternal!=height) )
   { fprintf(stderr,"Please note that the templateColor.pnm file has %ux%u resolution and the createTemplateDevice asked for %ux%u \n",widthInternal,heightInternal,width,height); }

  if (tmpColor!=0) { device[devID].templateColorFrame=tmpColor; } else
  {
   // if templateColorFrame is zero the next function behaves like a malloc
   device[devID].templateColorFrame= (char*) realloc(device[devID].templateColorFrame,device[devID].templateWIDTH*device[devID].templateHEIGHT*3*sizeof(char));
  }


  sprintf(file_name_test,"frames/%s/depthFrame_%u_%05u.pnm",device[devID].readFromDir,devID,0);
  short * tmpDepth = ReadPPMD(file_name_test,&widthInternal,&heightInternal);
  if ( (widthInternal!=width) || (heightInternal!=height) )
   { fprintf(stderr,"Please note that the templateColor.pnm file has %ux%u resolution and the createTemplateDevice asked for %ux%u \n",widthInternal,heightInternal,width,height); }

  if (tmpDepth!=0) { device[devID].templateDepthFrame=tmpDepth; } else
  {
   // if templateDepthFrame is zero the next function behaves like a malloc
   device[devID].templateDepthFrame= (short*) realloc(device[devID].templateDepthFrame,device[devID].templateWIDTH*device[devID].templateHEIGHT*1*sizeof(short));
  }

  NullCalibration(device[devID].templateWIDTH,device[devID].templateHEIGHT,&device[devID].calibRGB);

  sprintf(file_name_test,"frames/%s/color.calib",device[devID].readFromDir);
  if ( ! ReadCalibration(file_name_test,&device[devID].calibRGB) ) { fprintf(stderr,"Could not read color calibration\n"); }

  NullCalibration(device[devID].templateWIDTH,device[devID].templateHEIGHT,&device[devID].calibDepth);

  sprintf(file_name_test,"frames/%s/depth.calib",device[devID].readFromDir);
  if ( ! ReadCalibration(file_name_test,&device[devID].calibDepth) ) { fprintf(stderr,"Could not read depth calibration\n"); }


  return ((device[devID].templateColorFrame!=0)&&(device[devID].templateDepthFrame!=0));
}
Esempio n. 9
0
void	main(int argc, char **argv)
{
    if ( ! ReadPPM(stdin) )
    {
	fprintf(stderr, "Error reading PPM input file!!!\n");
	exit(1);
    }

    PPMtoYUV();

    WriteYUV(stdout);
}
int snapTemplateFrames(int devID)
{
    //TODO HERE MAYBE LOAD NEW BUFFERS
    int found_frames = 0;

    unsigned int widthInternal=0; unsigned int heightInternal=0;
    char * file_name_test = (char* ) malloc(2048 * sizeof(char));
    if (file_name_test==0) { fprintf(stderr,"Could not snap frame , no space for string\n"); return 0; }

    sprintf(file_name_test,"frames/%s/colorFrame_%u_%05u.pnm",device[devID].readFromDir,devID,device[devID].cycle);
    //fprintf(stderr,"Snap color %s",file_name_test);
    if (FileExists(file_name_test))
     {
       if (device[devID].templateColorFrame!=0) { free(device[devID].templateColorFrame); }
       device[devID].templateColorFrame = ReadPPM(file_name_test,&widthInternal,&heightInternal);
       ++found_frames;
     }

    sprintf(file_name_test,"frames/%s/depthFrame_%u_%05u.pnm",device[devID].readFromDir,devID,device[devID].cycle);
    //fprintf(stderr,"Snap depth %s",file_name_test);
    if (FileExists(file_name_test))
     {
      if (device[devID].templateDepthFrame!=0) { free(device[devID].templateDepthFrame); }
      device[devID].templateDepthFrame = ReadPPMD(file_name_test,&widthInternal,&heightInternal);
      ++found_frames;
     }

  free(file_name_test);
  file_name_test=0;

  ++device[devID].cycle;
  if ( device[devID].safeGUARD != SAFEGUARD_VALUE ) { fprintf(stderr,"\n\n\n\nERROR , memory corruption \n\n\n\n"); }

  if (device[devID].cycle>65534) { device[devID].cycle=0; }
  if (found_frames==0) { fprintf(stderr,"Could not find any frames , we finished stream \n");  device[devID].cycle = 0; } else
  if (found_frames!=2) { fprintf(stderr,"\n Warning: Did not find both frames\n");   }

  return 1;
}
Esempio n. 11
0
int H4()
{
    char fname[file_name_len];
    struct IMG image;
    struct IMG * pimg=&image;
    //lena
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    int * hist;
    hist=(int *)malloc(sizeof(int)*(pimg->maxv+1)*((pimg->channel-5)*2+1));
    HistPPM(hist,pimg);
    strcpy(fname,"lena_hist");
    WriteHist(hist,fname,pimg);
    //直方图完成
    //均衡化处理
    HistEqualization(pimg,hist);
    strcpy(fname,"lena_hist_equalization.ppm");
    WritePPM(fname,pimg);
    strcpy(fname,"lena_hist_equalization");
    WriteHist(hist,fname,pimg);

    free(hist);
    return 0;
}
Esempio n. 12
0
/*作业三*/
int H3()
{
    char fname[file_name_len];
    struct IMG image;
    struct IMG * pimg=&image;

    // hint
    // lena
    int * hist=NULL;
    int * array=NULL;
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    hist=(int *)calloc(sizeof(int),(pimg->maxv+1)*((pimg->channel-5)*2+1));//hist[] color:3*pimg->maxv
    if(hist==NULL)
    {
	printf("分配内存失败!\n");
	exit(-1);
    }
    printf("calloc=%d\n",sizeof(int)*(pimg->maxv+1)*((pimg->channel-5)*2+1));
    HistPPM(hist,pimg);
    strcpy(fname,"lena");
    WriteHist(hist,fname,pimg);
    
    //Parrots
    strcpy(fname,"Parrots.ppm");
    ReadPPM(fname,pimg);
    hist=(int *)calloc(sizeof(int),(pimg->maxv+1)*((pimg->channel-5)*2+1));//Hist[] color:3*pimg->maxv 
    if(hist==NULL)
    {
	printf("分配内存失败!\n");
	exit(-1);
    }
    HistPPM(hist,pimg);
    strcpy(fname,"Parrots");
    WriteHist(hist,fname,pimg);

    //计算分量图
    strcpy(fname,"Parrots.ppm");
    ReadPPM(fname,pimg);
    strcpy(fname,"Parrots");
    ComponentPPM(fname,pimg);
    free(hist);

    //计算映射函数
    //lena
    strcpy(fname,"lena.ppm");
    ReadPPM(fname,pimg);
    array=(int *)calloc(sizeof(int),(pimg->maxv+1)*((pimg->channel-5)*2+1));//Hist[] color:3*pimg->maxv 
    Square_MapPPM(array,pimg->maxv);
    MapPPM(array,pimg);
    strcpy(fname,"lena_square.ppm");
    WritePPM(fname,pimg);
    Sqrt_MapPPM(array,pimg->maxv);
    MapPPM(array,pimg);
    strcpy(fname,"lena_sqrt.ppm");
    WritePPM(fname,pimg);
    //Parrots
    strcpy(fname,"Parrots.ppm");
    ReadPPM(fname,pimg);
    array=(int *)calloc(sizeof(int),(pimg->maxv+1)*((pimg->channel-5)*2+1));//Hist[] color:3*pimg->maxv 
    Square_MapPPM(array,pimg->maxv);
    MapPPM(array,pimg);
    strcpy(fname,"Parrots_square.ppm");
    WritePPM(fname,pimg);
    Sqrt_MapPPM(array,pimg->maxv);
    MapPPM(array,pimg);
    strcpy(fname,"Parrots_sqrt.ppm");
    WritePPM(fname,pimg);
    free(array);
    return 0;
}
Esempio n. 13
0
int ReadSwappedPPM(char * filename,struct Image * pic,char read_only_header)
{
  ReadPPM(filename,pic,read_only_header);
  swapDepthEndianness(pic);
  return (pic->pixels!=0);
}
Esempio n. 14
0
void myInitData(int *argc, char **argv) {
    int  i;
    char s[1024];
    InteractionMode = MY_MENU_CAMERA;

    TX = 1.1; TY = 0.8; TZ = -2.0;

    XmouseDown = -1;
    YmouseDown = -1;
    XmouseCurrent = XmousePrev = -1;
    YmouseCurrent = YmousePrev = -1;
    DX = DY = 0;
    KeybModifiers = 0;
	ReadOFF("cube.off", &checker);
     	ReadPPM("snake.ppm", &TMap1);
    /* initialize texturing */
    TextureOn = GL_TRUE;

    /* read texture from PPM file - printout command line arguments for debugging */
    fprintf(stderr,"argc = %d: ",*argc);
    for (i = 0; i< *argc; i++)
        fprintf(stderr, " arg[%d] = %s, ",i, argv[i]);
    fprintf(stderr,"\n");

    i = -1;
	if( *argc == 1){
        printf("Reading in %s.\n", s );
      	ReadOFF("dodec1.off", &object);
	printf("Using default texture .\n");
	//i = ReadPPM("temp1.ppm", &TMap);
	i = -1;
	} 
    	if (*argc == 3) {
        /* load image from URL specified on command line */
        printf("Reading in %s.\n", argv[1]);
      	ReadOFF(argv[1], &object);
	sprintf(s,"./getppm.pl %s > temp.ppm", argv[2]);
        printf("Executing:\n   %s\n", s);
        system(s);
        i = ReadPPM("temp.ppm", &TMap);
	//i = ReadPPM(argv[2], &TMap);
    	} 
	else if (*argc == 2) {
        /* load image from default URL */
	printf("Reading in %s.\n", argv[1]);
      	ReadOFF(argv[1], &object);
 	printf("Using default texture file 'fermat_raw.ppm'.\n");
        //system("./getppm.pl http://www.cs.indiana.edu/~mitja/Delo/B581/fermat_raw.ppm > temp.ppm");
        //i = ReadPPM("temp1.ppm", &TMap);
	i =-1;
    	}
    if (i > 0) {
        printf("Using texture from file.\n"); /* image file is valid: use it as texture */
        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
        glGenTextures(1, &TextureName);
        glBindTexture(GL_TEXTURE_2D, TextureName);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TMap.texc, TMap.texr, 
                     0, GL_RGB, GL_UNSIGNED_BYTE, TMap.texture);
    } else {
        printf("Using checkers texture.\n");  /* image file is invalid: use checkers */
        myInitCheckers();
        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
        glGenTextures(1, &TextureName);
        glBindTexture(GL_TEXTURE_2D, TextureName);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, MY_CHECKERS_WIDTH, MY_CHECKERS_HEIGHT, 
                     0, GL_RGB, GL_UNSIGNED_BYTE, CheckersImg);        
    }
} /* myInitData() */
Esempio n. 15
0
void InitMirror()
{
	int* mode = new int;
	FloorTexPattern = ReadPPM("./textures/squareWhiteTiles.ppm",mode,&texwidth,&texheight);
	glGenTextures(1,&textureID);
	glBindTexture(GL_TEXTURE_2D,textureID);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,texwidth,texheight,0,GL_RGB,GL_UNSIGNED_BYTE,FloorTexPattern);

	PathList path("./shaders/reflectShaders/");
	FloorProg = new GLSLProgram(true,&path);
	FloorProg->SetFragmentShader("FloorFrag.glsl");
	FloorProg->SetVertexShader("FloorVert.glsl");
	FloorProg->ReloadShaders();

	ReflectImageProg = new GLSLProgram(true,&path);
	ReflectImageProg->SetFragmentShader("ReflectFrag.glsl");
	ReflectImageProg->ReloadShaders();

	//Center of mirror is at (0,0,-5.9)
	//Normal vector is (0,0,1)
	reflectmatrix[0]=1;
	reflectmatrix[1]=0;
	reflectmatrix[2]=0;
	reflectmatrix[3]=0;
	reflectmatrix[4]=0;
	reflectmatrix[5]=1;
	reflectmatrix[6]=0;
	reflectmatrix[7]=0;
	reflectmatrix[8]=0;
	reflectmatrix[9]=0;
	reflectmatrix[10]=-1;
	reflectmatrix[11]=0;
	reflectmatrix[12]=0;
	reflectmatrix[13]=0;
	reflectmatrix[14]=-11.8;
	reflectmatrix[15]=1;

	//Center of mirror is at (0,0,5.9)
	//Normal vector is (0,0,-1)
	reflectmatrix2[0]=1;
	reflectmatrix2[1]=0;
	reflectmatrix2[2]=0;
	reflectmatrix2[3]=0;
	reflectmatrix2[4]=0;
	reflectmatrix2[5]=1;
	reflectmatrix2[6]=0;
	reflectmatrix2[7]=0;
	reflectmatrix2[8]=0;
	reflectmatrix2[9]=0;
	reflectmatrix2[10]=-1;
	reflectmatrix2[11]=0;
	reflectmatrix2[12]=0;
	reflectmatrix2[13]=0;
	reflectmatrix2[14]=11.8;
	reflectmatrix2[15]=1;

	//Center of floor is at (0,-2,0)
	//Normal vector is (0,1,0)
	reflectmatrixF[0]=1;
	reflectmatrixF[1]=0;
	reflectmatrixF[2]=0;
	reflectmatrixF[3]=0;
	reflectmatrixF[4]=0;
	reflectmatrixF[5]=-1;
	reflectmatrixF[6]=0;
	reflectmatrixF[7]=0;
	reflectmatrixF[8]=0;
	reflectmatrixF[9]=0;
	reflectmatrixF[10]=1;
	reflectmatrixF[11]=0;
	reflectmatrixF[12]=0;
	reflectmatrixF[13]=-4;
	reflectmatrixF[14]=0;
	reflectmatrixF[15]=1;

	floorplane[0]=0;
	floorplane[1]=1;
	floorplane[2]=0;
	floorplane[3]=2;
	glClipPlane(GL_CLIP_PLANE0,floorplane);

	mirror1plane[0]=0;
	mirror1plane[1]=0;
	mirror1plane[2]=1;
	mirror1plane[3]=5.9;
	glClipPlane(GL_CLIP_PLANE1,mirror1plane);

	mirror2plane[0]=0;
	mirror2plane[1]=0;
	mirror2plane[2]=1;
	mirror2plane[3]=-5.9;
	glClipPlane(GL_CLIP_PLANE2,mirror2plane);

	//Load Model for Mirror
	MirrorhemModel = new HalfEdgeModel( "./models/dragon_250k.hem", TYPE_HEM_FILE );
	if (!MirrorhemModel->IsValid()) printf( "dragon_250k.hem not loaded!\n" );
	GLuint dispID = MirrorhemModel->CreateOpenGLDisplayList(USE_TRIANGLES | WITH_NORMALS);
}