数字图像处理(朱虹)Retinex图像增强方法matlab实现

课本3.4 Retinex图像增强方法,只考虑最基本的情况,只实现单尺度Retinex算法(SSR),对灰度图像进行处理。算法的主要思想为,从原始图像中去除照明的影响来还原图像的本质特征,照明由高斯滤波与原图卷积得到。

SSR算法的具体实现步骤:

1.读取原始待增强图像 f(i,j),并进行数据类型变换,将整型变换为double型;

2.确定参数c的大小,并根据公式确定系数K的取值;

3.根据公式来获得图像R(x,y);

4.对R(x,y)进行取反对数

 

clear;clc
f=rgb2gray(imread('D:\Download\beiguang1.jpg'));%读取图像(直接把彩色图像读为灰度图像)
subplot(1,2,1)%一行,两列,第一个
imshow(f)%绘制f的图像
[m,n]=size(f);%读取f图像的行数和列数,返回给m和n
f1=double(f);%把f转为double类型

c=20;%c的取值不唯一,一般介于20~80之间
K=1/(sqrt(2*pi)*c);%k代表 蓝不大,通过双重积分算出来的结果

for i=1:m
    for j=1:n
        g(i,j)=K*exp((-(i*i+j*j))/(c*c));%高斯函数
    end
end
gfft=fft2(g);%对g进行二维傅里叶变换
f1fft=fft2(f1);%对f1进行二维傅里叶变换
lfft=gfft.*f1fft;%卷积
l=ifft2(lfft);%二维傅里叶逆变换

R=log(f1+1)-log(l+1);%在对数域中,原图像减去低通滤波后的图像,得到高频增强的图像R
r=exp(R);%对R取反对数
subplot(1,2,2)
imshow(r)%绘制r图像

运行结果:

 数字图像处理(朱虹)Retinex图像增强方法matlab实现_第1张图片

课本原文为:

数字图像处理(朱虹)Retinex图像增强方法matlab实现_第2张图片 

 


 

你可能感兴趣的:(matlab,图像处理,计算机视觉)