标签:图像增强 图像处理 直方图匹配 直方图规定化 增强对比度
学习DIP第39天
转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!!
文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro
/******************************************************************************************** 直方图基本操作 *******************************************************************************************/ void InitMappingTable(void * arry,int size,int Data_type){ if(Data_type==TABLE_INT) for(int i=0;i<size;i++) ((int*)arry)[i]=0; else if(Data_type==TABLE_CHAR) for(int i=0;i<size;i++) ((char*)arry)[i]=0; else if(Data_type==TABLE_DOUBLE) for(int i=0;i<size;i++) ((double*)arry)[i]=0; } void InitHistogram(int *hist){ for(int i=0;i<GRAY_LEVEL;i++) hist[i]=0; } void setHistogram(double *src,int *hist,int width,int height){ InitHistogram(hist); for(int j=0;j<height;j++) for(int i=0;i<width;i++){ int tempv=src[j*width+i]; hist[tempv]++; } } int findHistogramMax(int *hist){ for(int i=GRAY_LEVEL-1;i>=0;i--){ if(hist[i]!=0) return i; } return -1; } int findHistogramMin(int *hist){ for(int i=0;i<GRAY_LEVEL;i++){ if(hist[i]!=0) return i; } return -1; } void fillMaptable(double * map){ for(int i=1;i<GRAY_LEVEL;i++){ if(map[i]==0) map[i]=map[i-1]; } } /******************************************************************************************** 直方图归一化 *******************************************************************************************/ void HistogramSpecification(double *src,double *dst,int* hist,int width,int height){ int src_hist[GRAY_LEVEL]; setHistogram(src, src_hist, width, height); double srcMap[GRAY_LEVEL]; double histMap[GRAY_LEVEL]; InitMappingTable(srcMap,GRAY_LEVEL,TABLE_DOUBLE); EqualizationHist(src_hist, srcMap); EqualizationHist(hist, histMap); int histMap_[GRAY_LEVEL]; InitHistogram(histMap_); for(int i=0;i<GRAY_LEVEL;i++) histMap_[(int)histMap[i]]=i; double dstMap[GRAY_LEVEL]; for(int i=0;i<GRAY_LEVEL;i++){ dstMap[i]=histMap_[(int)srcMap[i]]; } fillMaptable(dstMap); for(int i=0;i<width;i++) for(int j=0;j<height;j++) dst[j*width+i]=dstMap[(int)src[j*width+i]]; }
灰度图像--图像增强 直方图匹配(规定化)Histogram Specification
标签:图像增强 图像处理 直方图匹配 直方图规定化 增强对比度
原文地址:http://blog.csdn.net/tonyshengtan/article/details/43481829