一种自动调整对比度的图像增强方法
技术领域
本发明涉及一种图像增强处理方法,特别是一种自动调整对比度的图像增强方法。
背景技术
图像处理中调整对比度是图像增强领域中最常用、最重要的技术之一,其将原来不清晰的图像变得清晰或强调某些关注的特征,抑制非关注的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果的图像处理方法,是图像处理的最基本的方法,它往往是各种图像在进行分析与处理时必须的预处理操作,也是在图像处理中必备的一个基础步骤。
发明内容
本发明提供了一种处理快速并且效果显著的自动调整对比度的图像增强方法。
为实现上述目的,本发明采用的技术方案为:
一种自动调整对比度的图像增强方法,其特征在于,包括以下步骤:
10.对原始图像中的各个像素点进行红色通道、绿色通道、蓝色通道的直方图统计;
20.设置原始图像中的阴影部分和高光部分的修剪值;
30.计算红色通道、绿色通道、蓝色通道的阴影部分的上限值与高光部分的下限值;
40.对所述阴影部分的上限值进行最小值计算得到最小上限值;对所述高光部分的下限值进行最大值计算得到最大下限值;
50.对所述最小上限值与所述最大下限值进行阈值计算得到最终最小上限值与最终最大下限值;
60.根据所述的最终最小上限值与最终最大下限值得到映射表,并将原始图像中的各个像素点进行颜色映射,得到结果图像。
作为一种较佳实施例,所述步骤10中的直方图统计方法如下:
11.创建红色通道、绿色通道、蓝色通道的直方图统计的数组,大小为256个,并且初始化数组内的数据为0;
12.依次对原始图像各个像素点的红色通道、绿色通道、蓝色通道的颜色值进行统计;即
rHist[rColor]=rHist[rColor]+1;
gHist[gColor]=gHist[gColor]+1;
bHist[bColor]=bHist[bColor]+1;
其中,rHist、gHist、bHist分别为红色通道、绿色通道、蓝色通道的直方图统计的数组,rColor、gColor、bColor分别为原始图像中各个像素点对应的红色通道、绿色通道、蓝色通道的颜色值。
作为一种较佳实施例,所述步骤20中设置原始图像中的阴影部分和高光部分的修剪值的公式如下:
nTrimLowCount=0.5+lowK*w*h;
nTrimHighCount=0.5+highK*w*h;
其中,nTrimLowCount为阴影部分的修剪值;nTrimHighCount为高光部分的修剪值;lowK为阴影部分的修剪百分比,范围从0.001到0.01之间;highK为高光部分的修剪百分比,范围从0.001到0.01之间;w与h分别为原始图像的宽和高。
作为一种较佳实施例,所述步骤30中阴影部分的上限值的计算方法为:初始化索引为0,对直方图统计的数组上的对应索引的个数进行累加,如果大于步骤20中的阴影部分的修剪值则退出,否则,索引加上一并继续对直方图统计的数组上的对应索引的个数进行累加,直到退出为止;即得到阴影部分的上限值为该索引值。
作为一种较佳实施例,所述步骤30中高光部分的下限值的计算方法为:初始化索引为255,对直方图统计的数组上的对应索引的个数进行累加,如果大于步骤20中的高光部分的修剪值则退出,否则,索引减去一并继续对直方图统计数组上的对应索引的个数进行累加,直到退出为止;即得到高光部分的下限值为该索引值。
作为一种较佳实施例,所述步骤40中的最小上限值与最大下限值的计算公式如下:
sectionLow=min(rLow,min(gLow,bLow));
sectionHigh=max(rHigh,max(gHigh,bHigh));
其中,sectionLow为最小上限值;rLow、gLow、bLow为步骤30中得到的红色通道、绿色通道、蓝色通道的阴影部分的上限值;sectionHigh为最大下限值;rHigh、gHigh、bHigh为步骤30中得到的红色通道、绿色通道、蓝色通道的高光部分的下限值。
作为一种较佳实施例,所述步骤50中最终最小上限值与最终最大下限值的计算公式如下:
sectionResultLow=min(lowThreshold,sectionLow);
sectionResultHigh=max(highThreshold,sectionHigh);
其中,sectionResultLow为最终最小上限值;lowThreshold为阴影部分的阈值,范围从10到92之间;sectionLow为步骤40中得到的最小上限值;sectionResultHigh为最终最大下限值;highThreshold为高光部分的阈值,范围从168到245之间;sectionHigh为步骤40中得到的最大下限值。
作为一种较佳实施例,所述步骤60中的映射表的计算方法如下:
61.创建映射表mapTable,大小为256个,并将数组的数据都初始化为0;并初始化索引i为0;
62.判断索引是否大于或等于256,如果是则退出;否则判断索引是否小于最终最小上限值,如果小于的话,则数组中该索引下的值为0;否则继续判断是否大于最终最大下限值,如果大于的话,则数组中该索引下的值为255;否则根据以下公式获得该索引下的值:
mapTable[i]=0.4+(i-sectionResultLow)*255/(sectionResultHigh-sectionResultLow);
其中,mapTable为映射表;i为索引值;sectionResultLow为最终最小上限值;sectionResultHigh为最终最大下限值;
接着将索引加上一,并继续重复步骤62,直到退出为止。
作为一种较佳实施例,所述步骤60中将原始图像中的各个像素点进行颜色映射得到结果图像的计算方法如下:
rResult=mapTable[rColor];
gResult=mapTable[gColor];
bResult=mapTable[bColor];
其中,rResult、gResult、bResult为结果图像上对应的像素点的红色通道、绿色通道、蓝色通道的颜色值;rColor、gColor、bColor为原始图像上对应的像素点的红色通道、绿色通道、蓝色通道的颜色值;mapTable为映射表。
本发明的有益效果是:
本发明的一种自动调整对比度的图像增强方法,其通过对原始图像进行直方图统计,并结合其阴影部分和高光部分的修剪值分别计算出阴影部分的上限值与高光部分的下限值,进而通过极值计算分别得到最小上限值与最大下限值,最后通过阈值计算得到最终最小上限值与最终最大下限值,以及根据所述最终最小上限值与最终最大下限值得到映射表,将原始图像中的各个像素点进行颜色映射得到结果图像;从而能够很好的处理图像中阴影部分与高光部分之间的对比度调整以得到合适的对比度,防止对比度调整过大导致图像失真。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明的自动调整对比度的图像增强方法的流程简图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明的一种自动调整对比度的图像增强方法,其包括以下步骤:
10.对原始图像中的各个像素点进行红色通道、绿色通道、蓝色通道的直方图统计;
20.设置原始图像中的阴影部分和高光部分的修剪值;
30.计算红色通道、绿色通道、蓝色通道的阴影部分的上限值与高光部分的下限值;
40.对所述阴影部分的上限值进行最小值计算得到最小上限值;对所述高光部分的下限值进行最大值计算得到最大下限值;
50.对所述最小上限值与所述最大下限值进行阈值计算得到最终最小上限值与最终最大下限值;
60.根据所述的最终最小上限值与最终最大下限值得到映射表,并将原始图像中的各个像素点进行颜色映射,得到结果图像。
本实施例中,所述步骤10中的直方图统计方法主要包括以下步骤:
11.创建红色通道、绿色通道、蓝色通道的直方图统计的数组,大小为256个,并且初始化数组内的数据为0;
12.依次对原始图像各个像素点的红色通道、绿色通道、蓝色通道的颜色值进行统计;即
rHist[rColor]=rHist[rColor]+1;
gHist[gColor]=gHist[gColor]+1;
bHist[bColor]=bHist[bColor]+1;
其中,rHist、gHist、bHist分别为红色通道、绿色通道、蓝色通道的直方图统计的数组,rColor、gColor、bColor分别为原始图像中各个像素点对应的红色通道、绿色通道、蓝色通道的颜色值。
所述步骤20中设置原始图像中的阴影部分和高光部分的修剪值的公式如下:
nTrimLowCount=0.5+lowK*w*h;
nTrimHighCount=0.5+highK*w*h;
其中,nTrimLowCount为阴影部分的修剪值;nTrimHighCount为高光部分的修剪值;lowK为阴影部分的修剪百分比,范围从0.001到0.01之间,本实施例中优选为0.003;highK为高光部分的修剪百分比,范围从0.001到0.01之间,本实施例中优选为0.003;w与h分别为原始图像的宽和高。
本实施例中,所述步骤30中阴影部分的上限值的计算方法为:初始化索引为0,对直方图统计的数组上的对应索引的个数进行累加,如果大于步骤20中的阴影部分的修剪值则退出,否则,索引加上一并继续对直方图统计的数组上的对应索引的个数进行累加,直到退出为止;即得到阴影部分的上限值为该索引值;所述步骤30中高光部分的下限值的计算方法为:初始化索引为255,对直方图统计的数组上的对应索引的个数进行累加,如果大于步骤20中的高光部分的修剪值则退出,否则,索引减去一并继续对直方图统计数组上的对应索引的个数进行累加,直到退出为止;即得到高光部分的下限值为该索引值;根据以上步骤分别计算得到红色通道、绿色通道、蓝色通道的阴影部分的上限值与高光部分的下限值。
本实施例中,所述步骤40中的最小上限值与最大下限值的计算公式如下:
sectionLow=min(rLow,min(gLow,bLow));
sectionHigh=max(rHigh,max(gHigh,bHigh));
其中,sectionLow为最小上限值;rLow、gLow、bLow为步骤30中得到的红色通道、绿色通道、蓝色通道的阴影部分的上限值;sectionHigh为最大下限值;rHigh、gHigh、bHigh为步骤30中得到的红色通道、绿色通道、蓝色通道的高光部分的下限值。
本实施例中,所述步骤50中最终最小上限值与最终最大下限值的计算公式如下:
sectionResultLow=min(lowThreshold,sectionLow);
sectionResultHigh=max(highThreshold,sectionHigh);
其中,sectionResultLow为最终最小上限值;lowThreshold为阴影部分的阈值,范围从10到92之间,本实施例中优选为50;sectionLow为步骤40中得到的最小上限值;sectionResultHigh为最终最大下限值;highThreshold为高光部分的阈值,范围从168到245之间,本实施例中优选为200;sectionHigh为步骤40中得到的最大下限值。
本实施例中,所述步骤60中的映射表的计算方法如下:
61.创建映射表mapTable,大小为256个,并将数组的数据都初始化为0;并初始化索引i为0;
62.判断索引是否大于或等于256,如果是则退出;否则判断索引是否小于最终最小上限值,如果小于的话,则数组中该索引下的值为0;否则继续判断是否大于最终最大下限值,如果大于的话,则数组中该索引下的值为255;否则根据以下公式获得该索引下的值:
mapTable[i]=0.4+(i-sectionResultLow)*255/(sectionResultHigh-sectionResultLow);
其中,mapTable为映射表;i为索引值;sectionResultLow为最终最小上限值;sectionResultHigh为最终最大下限值;
接着将索引加上一,并继续重复步骤62,直到退出为止。
所述步骤60中将原始图像中的各个像素点进行颜色映射得到结果图像的计算方法如下:
rResult=mapTable[rColor];
gResult=mapTable[gColor];
bResult=mapTable[bColor];
其中,rResult、gResult、bResult为结果图像上对应的像素点的红色通道、绿色通道、蓝色通道的颜色值;rColor、gColor、bColor为原始图像上对应的像素点的红色通道、绿色通道、蓝色通道的颜色值;mapTable为映射表。
上述说明示出并描述了本发明的优选实施例,如前,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。