zoukankan      html  css  js  c++  java
  • 图像处理基本算法直方图均衡

    直方图是多种空间处理技术的基础,可以用于图像增强。同时在其他的处


    理方法中也十分有用,比如图像压缩和分割。
    基本的原理:
    Ni = 255*(N0 + N1 + N2 +……Ni)/(width*height)
    程序流程:
    1、统计各个像素值的个数
    2、建立映射表

    3、赋予新值


    处理后图像:


    源代码:

    #include<cv.h>
    #include<highgui.h>
    
    int main(){
    	IplImage * image;
    	image = cvLoadImage("E:\\image\\pollen.jpg",0);
    	cvNamedWindow("image",CV_WINDOW_AUTOSIZE);
    	//cvSaveImage("E:\\image\\pollen.jpg",image,0);
    	cvShowImage("image",image);
    	cvWaitKey(0);
    	unsigned char * ptr;
    	int count[256] = {0};//灰度值的个数
    	int map[256];//灰度映射表
    	int temp;
    	if(image->nChannels == 3){
    		return 0;
    	}
    
    	else if(image->nChannels == 1){
    		//统计各个灰度值的个数
    		for(int i = 0 ; i < image->height;i++){
    			for(int j = 0; j< image->width;j++){
    			ptr = (unsigned char *)image->imageData + i*image->widthStep + j; 
    			count[*ptr]++;
    			}
    		}
    		//建立映射表
    		for(int m = 0 ; m< 256 ; m++){
    			temp = 0;
    			for(int n = 0 ; n<= m ;n++){
    			temp += count[n];
    			}
    			map[m] = (unsigned char)(temp * 255/image->width/image->height);
    		}
    		
    		//给图片赋予新值
    		for(int i = 0 ; i < image->height;i++){ 
    			for(int j = 0; j< image->width;j++){
    				ptr = (unsigned char *)image->imageData + i*image->widthStep +j;
    				*ptr = map[*ptr];
    			}
    		}
    	}
    	cvShowImage("image",image);
    	cvWaitKey(0);
    	cvSaveImage("E:\\image\\pollen2.jpg",image,0);
    	return 0;
    }



  • 相关阅读:
    人类历史上最智慧的169条警世箴言(句句珠玑,发人深省)
    最负责任的回答
    成大事必须依靠的五种人
    一生的伤痕
    有谁愿意陪我一程
    惜缘
    那朵美丽的格桑花,你是否依然绽放?
    今生今世只等你
    成就一生的15条黄金法则
    遇到困难挫折也不要悲观:每个人生来就是冠军(转)
  • 原文地址:https://www.cnblogs.com/libing64/p/2878739.html
Copyright © 2011-2022 走看看