1.对原图进行log变换
2.利用导向滤波提取基层、细节层
3.限制亮度最大值、最小值
clc;clear;
data=imread('DR_ck_0001.tiff');
img = double(data);
eps=0.04;
log_img = log_trans(img);
img_basic = gradient_guidedfilter(log_img, log_img, eps);
img_detail = log_img-img_basic;
tmp = log(2 + (img_basic./max(img_basic(:))).^0.2345*8);
img_basic_compress= log(img_basic+1)/log10(max(img_basic(:)+1))./tmp;
img_basic_compress = img_basic_compress.^(1/2.2);
img_detail_enhanced = 2.*atan(20*img_detail)/pi;
img_enhanced = img_basic_compress + img_detail_enhanced;
cut_max = min(img_enhanced(:)) + 0.97 * (max(img_enhanced(:)) - min(img_enhanced(:)));
cut_min = min(img_enhanced(:)) + 0.01 * (max(img_enhanced(:)) - min(img_enhanced(:)));
img_enhanced(find(img_enhanced>cut_max)) = cut_max;
img_enhanced(find(img_enhanced<cut_min)) = cut_min;
img_enhanced = (img_enhanced - cut_min) ./ (cut_max - cut_min);
img_enhanced = medfilt2(img_enhanced, [3,3]);</