MATLAB图像处理-基于HSV的彩色图像增强(附代码)

为了保证色彩的不失真,所以把RGB图像,转为HSV进行处理,对其中的亮度S进行操作,先进行直方图均衡化,后进行高斯-拉普拉斯滤波器的锐化处理,进行改进亮度。

锐化处理可以用空间微分来完成. 微分算子的响应强度与图像在该点的突变程度有关,图像微分增强了边缘和其他突变(如噪声)而消弱了灰度变化缓慢的区域.。

代码如下:
其中的直方图均衡化函数可以参考:直方图均衡化

img = imread('');
figure;
imshow(img);
title('原图')
%转hsv
img_hsv = rgb2hsv(img);
%提取亮度
img_v = img_hsv( :,:,3);

%先进行直方图均衡化处理
img_hist = hist_1(img_v);

%再进行锐化处理
% w = fspecial('laplacian', 0.8);%生成拉普拉斯滤波器
w = fspecial('log', [5 5], 0.4);%生成高斯-拉普拉斯滤波器
img_ruihua = filter(img_hist, w, 5);

img_hsv(:,:,3) = img_hist;
img_after = hsv2rgb(img_hsv);
figure;
imshow(img_after);
title('处理后')

%%
%锐化函数
function img_result = filter(img_v, w, muban_size)
    moban_size = muban_size;
    [M, N] = size(img_v);
    img_lap = zeros(M, N);
     expand_img = double(wextend('2D','zpd', img_v, floor(moban_size/2)));%扩展0,转double为了矩阵运算
 
     for i=1:M
        for j=1:N
            ave = sum( sum( expand_img(i:i+moban_size-1,j:j+moban_size-1) .* w)); %取出扩展元素与模板相乘,并求矩阵元素之和
            img_lap(i,j) = ave;
        end
     end

    
    img_result = img_v - img_lap;
end

%%
%直方图均衡化函数
function hist_img = hist_1(I)
    I = floor(I.*255);
    [M, N] = size(I);
    size_img = M*N;
    c = zeros(1,256);%统计每个每个像素值的个数
    b= c;%转化前后的对照表
  
    temp = I(:);
    temp = sort(temp);
    
    for i = 1:size_img
        c(temp(i)+1) = c(temp(i)+1)+1;      
    end
    a = c;%求和
    for i = 2:256
       a(i) = c(i) + a(i-1);
    end
    
    min_cdf = 10000;
    for i = 1:256
       if a(i)>0
           if a(i) < min_cdf
                min_cdf = a(i);
           end
       end
    end
    
    for j = 1:256
        if a(j) > 0
             b(j) = round(255*(a(j)-min_cdf)/(size_img-min_cdf));
        end
    end
    
    for i = 1:M
        for j = 1:N
            I(i,j) = b(I(i,j)+1);
        end       
    end  
    hist_img = I./255;
end

首先对夜景照片进行试验:
MATLAB图像处理-基于HSV的彩色图像增强(附代码)_第1张图片
可以看到对夜景照片的暗部增强明显,但是天空会有些过曝。

再对雾天照片进行试验:
MATLAB图像处理-基于HSV的彩色图像增强(附代码)_第2张图片
整体的亮度有了一些增强,有部分去雾功能,但是不是很完美。

对于暗光下的人像处理试验:
MATLAB图像处理-基于HSV的彩色图像增强(附代码)_第3张图片
对于人像效果较好,脸部亮度提升明显,细节增强明显。

代码肯定还有很多不完善的地方,欢迎批评指正。

你可能感兴趣的:(MATLAB图像处理,图像处理)