【图像增强】基于matlab HSI+同态滤波彩色图像增强【含Matlab源码 1515期】
一、 图像增强技术简介
1 图像增强
图像增强是对图像的某些特征,如边缘、轮廓、对比度等进行强调或锐化,以便于显示、观察或进一步分析与处理。通过对图像的特定加工,将被处理的图像转化为对具体应用来说视觉质量和效果更“好”或更“有用”的图像。
图像增强是最基本最常用的图像处理技术,常用于其他图像处理的预处理阶段。
(1)高通平滑、低通锐化;平滑模糊、锐化突出图像细节
(2)滤波器还有带通、带阻等形式
(3)根据噪声(椒盐噪声、高斯噪声…)的不同,选用不同的滤波
(4)邻域有4-邻域、对角邻域、8-邻域,相对应的有邻接,即空间上相邻、像素灰度相似
(5)图像边缘处理:忽略不处理、补充、循环使用
(6)目前尚未图像处理大多基于灰度图像
2 同态滤波
同态滤波采用的是照射-反射模型, 即通过同时减小图像的灰度范围和增强图像的对比度来对图像增强. 图像可表示为照射i(x,y)和反射r(x,y) 两部分的乘积
将其变换到对数域, 并进行傅里叶变换得
式中: I(u,v)和R(u,v)分别是In(i(x,y))和In(r(x,y)) 的傅里叶变换, 借助滤波函数H(u,v)对F(u,v)进行滤波, 可以分离得到入射分量和反射分量
滤波后, 进行傅里叶逆变换得
对式(25)取指数后, 得到滤波后的图像
3 Retinex增强处理
基于全局直方图、局部直方图的图像去雾算法在理论及实现上比较简单,能起到一定的去雾处理效果。为了进行对比, 实验中采取了Retin ex图像增强算法来进行对比, 该算法可以平衡图像灰度动态范围压缩、图像增强和图像颜色恒常三个指标,能够实现对含雾图像的自适应性增强。因此, Retin ex增强处理通过对RGB图像的R、G、B三层通道分别应用Retin ex算法进行处理, 再整合到新的图像的方式来进行。
4 图像的直觉模糊增强算法
模糊范数在模糊集的理论体系中占有重要地位,YAGER通过“最大-最小”算子定义了模糊范数
HAMACHER通过纯代数运算定义模糊范数
对于一幅大小为M×N的灰度图像B(彩色图像取其亮度),其灰度值范围为[0,L-1],则图像B的模糊域的隶属函数可定义为
式中:gmin和gmax分别为图像灰度值的最小值和最大值;gi j为像素(i,j)的灰度值。
直觉模糊集:设X是一个给定论域,则X上的一个直觉模糊集A为
A={<x,μA(x),γA(x)>|x∈X} (6)
式中:μA(x)∈[0,1]为隶属函数,γA(x)∈[0,1]为非隶属函数,且对于A上的所有x∈X,0<μA(x)+γA(x)≤1,πA(x)=1-μA(x)-γA(x)为犹豫度。
式中:0≤α≤1,α用来调节隶属度μ(gi j)本身包含的模糊性,经实验验证,当0.6<α≤0.8时,图像增强效果较好。
利用式(4)的Hamacher模糊范数,可合成隶属度
直觉模糊增强图像的步骤为: 1) 通过式(5)计算图像每个像素点的隶属度;2) 通过式(7)和式(8)计算图像每个像素点的隶属度的下限和上限;3) 通过式(9)将图像每个像素点的隶属度的下限和上限合成为像素点的隶属度;4) 通过式(10)计算图像每个像素点的隶属度对应的灰度值。
二、部分源代码
close all;clear;clc
addpath('model');
addpath('src');
% 读取图像
I = imread('4.1.01.tiff');
en = BlockAvEn(I,8);
% 全局同态滤波
rgbim0 = GlobalHomo(I,1.2,0.5,50,1);
en0 = BlockAvEn(rgbim0,8);
% 局部同态滤波
rgbim1 = LocalHomo(I,1.2,0.5,4,1,8);
en1 = BlockAvEn(rgbim1,8);
% 分块同态滤波
rgbim2 = BlockHomo(I,1.2,0.5,4,1,8);
en2 = BlockAvEn(rgbim2,8);
figure(1)
subplot(1,4,1)
imshow(I);
title(['原始图像:',num2str(en)])
subplot(1,4,2)
imshow(rgbim0);
title(['全局同态滤波:',num2str(en0)])
subplot(1,4,3)
imshow(rgbim1);
title(['局部同态滤波:',num2str(en1)])
subplot(1,4,4)
imshow(rgbim2);
title(['分块同态滤波:',num2str(en2)])
function en = BlockAvEn(I,block)
%局部平均信息熵
% en = BlockAvEn(I,block)
% I:输入图像
% block:分块大小
en = 0;
[row,col,channel] = size(I);
% 块的大小为Mb*Nb
Mb = block; Nb = block;
rb = floor(row/Mb); cb = floor(col/Nb);
for c = 1:channel
im = I(:,:,c);
for i =1:rb
for j = 1:cb
temp = im((i-1)*Mb+1:i*Mb , (j-1)*Nb+1:j*Nb);
en = en + entropy(temp);
end
end
end
en = en/(rb*cb*channel);
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]李连志,邢川.基于同态滤波的平面视觉图像色彩增强算法[J].计算机仿真. 2021,38(02)
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/121311336
- 点赞
- 收藏
- 关注作者
评论(0)