1.一种基于引导滤波的彩色图像Retinex增强方法,其特征在于,以Retinex理论、引导滤波为基础,调整彩色RGB图像灰度值在规定灰度范围内显示,包括如下步骤:步骤1:读取RGB彩色图像,提取彩色图像的三个分量R、G、B;
步骤2:R分量对数变换,得滤波后图像LR,R分量对数减去LR对数后指数变换;
步骤3:计算uint8型DR图像;
步骤4:计算灰度图像DR的直方图H(i);
步骤5:计算p≥p0对应的h0;
步骤6:记录H(i)>h0的灰度值,设置拉伸范围[a b];
步骤7:依次找出灰度值在图像DR上的位置idx1,记录从对应数值;
步骤8:记录H(i)≤h0的灰度值,取出灰度数值,寻找在图像DR灰度值的位置和数值,并记下位置坐标;
步骤9:将R分量输出图像输出,处理G、B分量及对应的输出图像;
步骤10:将原彩色图像RGB换成新变量Rout、Gout、Bout输出彩色图像Imageout,步骤2中,R分量对数变换Rlog=log(R),对R分量引导滤波,得滤波后图像LR,取对数变换LRlog=log(LR),R分量对数减去LR对数后指数变换(EXPR=exp(log(R)‑log(LR)),步骤3中,依如下公式计算uint8型DR图像:按四舍五入法取整uint8型DR图像,其中,MIN、MAX分别为数据EXPR的最小值与最大值,步骤4中,计算灰度图像DR的直方图H(i),i为灰度值,H(i)为每个灰度值i对应数值,设置输出图像Rout与图像DR尺寸大小一样,且为全零,步骤5中,利用如下公式计算p≥p0对应的h0:
其中:p0一般取值0.9000~1.0000;
M、N为图像DR行数与列数,
步骤6中,用数组nw记录H(i)>h0的灰度值,数组长度为n;设置拉伸范围[a b],拉伸间隔:d=(b‑a)/n,0≤a<b≤255
其中:a值大小控制图像低灰度的亮度;
b值大小可以控制图像灰度高的亮度,
步骤7中,从nw(1)~nw(n)依次找出灰度值在图像DR上的位置idx1,并在输出图像Rout对应位置写入数值Rout(idx1)=d×x+a,用数组TW记录从nw(1)~nw(n)的对应数值Rout(idx1),x依次取1~n,Rout(idx1)为R分量输出图像Rout对应位置新灰度值,步骤8中,用数组nw1记录H(i)≤h0的灰度值,数组长度为n1;
依次从数组nw1(1)~nw1(n1)取出灰度数值nw1(j),寻找在图像DR灰度值为nw1(j)的位置idx;
将nw1(j)与数组nw中数值进行比较,找出与nw1(j)最接近的数值nw(T),MIN{|nw1(j)‑nw(x)|}取最小值时对应的nw(T),并记下nw(T)的位置坐标idy;
根据idy位置信息,找出nw1(j)变化后的数值为TW(idy),即R分量输出图像Rout(idx)=TW(idy),nw1(j)数值在j依次取1~n1,x依次取1~n,步骤9中,将R分量输出图像Rout转换成uint8类型输出,按步骤2‑步骤8同样的方法处理G、B分量,对应的输出图像Gout、Bout。