|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
+ i2 Z6 I5 A1 }! |- g
一、简介
! k' Y& a/ o1 }6 L4 ^8 ]将ace增强后的图像信息熵与图像标准差的乘积作为目标函数, ace的增益因子a作为待寻优的变量;, S! Z+ j' |' q& O0 V3 o, i
使用pso算法对ace的增益因子a进行寻优,并返回最优的增益因子;% F9 H: `$ c) w( D
将最优增益代入ace算法中,对图像进行增强;
9 O- W0 P( Y1 y" G* c) d0 h( w8 O: y采用引导滤波对增强后的图像进行降噪,提高可视化效果;" V% o) q; Y& c7 w8 h2 F& [3 ~. n
: d0 n4 M9 h3 ?5 h% Q, Y1 e* b
9 g0 [. M/ N) {( C) C1 a二、源代码
8 w. s: W+ m% S' v% l4 C, P
5 o! S1 j& g" T w. i% \3 U- %% PSO_ACE
- % date: 2020_08
- % Author: X
- % function: 图像增强,(1) PSO优化ACE增益因子 (2) 引导滤波降噪
- %% 初始化
- addpath(genpath(pwd));
- clear;
- clc;
- close all;
- warning('off')
- %% 定义全局变量
- global meanimg stdimg I img
- I = rgb2ycbcr(imread('test2.jpg'));% 将图片转换到ycbcr空间
- img = double(I(:,:,1));
- % 求局部均值
- filter = fspecial('average',3);
- meanimg = imfilter(img,filter);
- % figure;imshow(meanimg/255,[]);
- % 求局部标准差
- stdimg = stdfilt(img);
- % temp = stdfilt(img(:,:,1));
- %% PSO 寻优
- a_range=[0,1]; % 参数x变化范围(这里寻优的是ACE算法中的增益因子a)
- range = [a_range];
- Max_V = 0.2*(a_range(:,2)-a_range(:,1)); % 最大速度取变化范围的10%~20%
- n=1; % 待优化函数的维数
- psoparams = [10 200 10 2 2 0.8 0.2 1500 1e-25 200 NaN 0 0]; % 参数配置,详细查看pso工具箱使用文档
- Bestarray = pso_Trelea_vectorized('obj_func', n, Max_V, range, 1, psoparams); % 调用PSO寻优,返回最优参数以及最优函数值
- %% 输出增强后的图像(将获得增益因子代入ACE)
- D = mean(meanimg(:));
- c = Bestarray(1)*D./(stdimg);
- c(c>10) = 3;
- result = meanimg + c.*(img - meanimg);
- MIN = min(min(result));
- MAX = max(max(result));
- result = (result - MIN)/(MAX - MIN);
- result = adapthisteq(result);
- I(:,:,1) = result*255;
- result_img = ycbcr2rgb(I);
- figure;imshow(result_img);
- title('PSO\_ACE');
- %% 引导滤波降噪
- [r,c,b]=size(I);
- x = reshape(result_img,[r*c b]);
- x = compute_mapping(x,'PCA',1); % 对原图进行PCA降维
- guidance = reshape(x, r, c)/255; % 获得引导图像
- result_img = double(result_img)/255;
- r = 5; % 滤波半径
- eps = 0.005; % 滤波正则化参数
- for i = 1:3
- result_img_GD(:,:,i) = guidedfilter(guidance, result_img(:,:,i), r, eps); % 引导滤波
- end
- figure;imshow(result_img_GD,[]);
- title('PSO\_ACE\_GD'); % 显示滤波后的图像
$ Z. _# E% K2 h1 c - u5 |1 H: c1 O$ P/ P7 ?
% c9 N" [4 v# i! |三、运行结果/ A7 _4 }" s: @4 Q1 A
{; t+ G9 W3 y, q6 K# R
/ D3 x) I# r5 Z3 H' }2 W/ A0 D* v
0 t( M+ n0 @7 Y4 b, O3 H2 V+ G- Y3 H
; p, F7 P0 l% n, j
# \* r: y/ A+ E0 E* `/ l5 v
- k' _4 T" j7 v$ O
4 }6 y+ }8 ~* w" q. }! Y# m: i8 X! B4 i% b' h# R; x
+ _$ u1 E( p* G( _+ {8 C8 @ |
|