数字图像处理学习小结(3)——图像增强

1、概述

根据处理所进行的空间不同,分为基于空域的方法和基于频域的方法。
空域是指由像素组成的空间,基于空域的方法是指直接作用于像素的增强方法;基于频域的方法要在空域频域之间进行变换,然后在频域进行增强操作。

2、空域点处理变换增强

有几类方法:

  1. 将空域中每个像素增强;
  2. 借助直方图
  3. 借助一系列图像间的操作
    设计合适的映射函数。

1)直接灰度变换

  1. 灰度线性变换:g(x,y) = af(x,y)+b
  2. 分段线性处理:不同范围不同的线性函数
  3. 对数变换
  4. 灰度切分:
    在这里插入图片描述

2)直方图处理

  1. 直方图均衡化:累计概率乘上(灰度等级加一)四舍五入后映射,(连续求导,离散累加)如下图
    在这里插入图片描述

  2. 直方图规定化
    设𝒑(𝒓)是原始图像灰度分布的概率密度函数, 𝒑(𝒛)是希望得到的图像的灰度概率密度函数
    直方图均衡化
    在这里插入图片描述
    在这里插入图片描述
    如用s代替u,得到函数关系
    在这里插入图片描述

3)空域滤波增强

利用各种模板进行滤波处理,消除图像噪声
噪声种类:

  1. 椒盐噪声:图像中的像素有50%的概率等于该图像的灰度峰值(最大和最小)
  2. 高斯噪声:概率为高斯分布

常用滤波方法:

  1. 均值滤波:高斯噪声均值滤波效果比中值好
  2. 中值滤波:椒盐噪声中值滤波效果比均值好
  3. 边界保持平滑滤波:不处理像素边界上的点
  4. 锐化滤波:增强边缘,高通滤波,有线性锐化和非线性锐化,非线性锐化常用微分方法中的梯度法,即按照不同梯度增加锐化。还有很多别的方法,各有异曲同工之妙

3、频域增强

傅里叶变换后的频谱图,图像的频域中的高频分量对应图像的细节信息,图像低频分量对应图像的轮廓信息。高频分量代表的是信号的突变部分(即灰度值梯度大),而低频分量决定信号的整体形象(即梯度小)。
频谱中的亮点表示梯度大的点。
在这里插入图片描述
在频域内进行滤波,常用的滤波方法有:低通,高通,带通、带阻,同态。
同态滤波
在这里插入图片描述
在这里插入图片描述

4、图像增强测试题:

在这里插入图片描述
对上述低照度图像进行灰度化,计算并显示以上低照度图像的灰度直方图和离散傅里叶变换频谱幅度图;
对以上低照度图像分别进行直方图均衡化和同态滤波操作,并对两种算法的最终效果进行对比;

代码实现:

mypreimage = imread('image.jpg');%读取图像

%显示原图
% figure(1);
% imshow(mypreimage);

mygrayimage = rgb2gray(mypreimage);%灰度化程序

%显示灰度图
figure(2);
imshow(mygrayimage);

%灰度直方图
% figure(3);
% imhist(mygrayimage,64);

%傅里叶幅值谱
% figure(4);
f = fft2(mygrayimage);%二维傅里叶变换
f = fftshift(f); %图像对称
% imshow(log(abs(f)),[]);
% plot(abs(f));

%直方图均衡化
myfinishimage = histeq(mygrayimage);
figure(5);
imshow(myfinishimage);
% figure(6);
% imhist(myfinishimage,64);

%同态滤波
rH = 1;
rL = 0.1;
c = 0.2;%介于rH和rL之间
D0 = 0.2;
[M,N]=size(mygrayimage);
img_log = log(double(mygrayimage) + 1);
img_py = zeros(M, N);
%把图像放中间
for i = 1:M
   for j= 1:N
       if mod(i+j, 2) == 0
           img_py(i,j) = img_log(i, j);
       else
           img_py(i,j) = -1 * img_log(i, j);
       end
   end
end
img_py_fft = fft2(img_py);
img_tt = zeros(M, N);
deta_r = rH - rL;
D = D0^2;
m_mid=floor(M/2);%中心点坐标
n_mid=floor(N/2);  

for i = 1:M
   for j =1:N
        dis = ((i-m_mid)^2+(j-n_mid)^2);
        img_tt(i, j) = deta_r * (1-exp((-c)*(dis/D))) + rL;
   end
end
%滤波
img_temp =   img_py_fft.*img_tt;

%反变换,取实部,绝对值
img_temp = abs(real(ifft2(img_temp)));

%指数化
img_temp = exp(img_temp) - 1;


%归一化处理
max_num = max(img_temp(:));
min_num = min(img_temp(:));
range = max_num - min_num;
img_after = zeros(M,N,'uint8');
for i = 1 : M
    for j = 1 : N
        img_after(i,j) = uint8(255 * (img_temp(i, j)-min_num) / range);
    end
end
figure(7);
imshow(img_after);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值