天天看點

【圖像增強】基于matlab PSO尋優ACE算法圖像增強【含Matlab源碼 088期】

一、圖像增強技術簡介

1圖像增強

圖像增強是對圖像的某些特征,如邊緣、輪廓、對比度等進行強調或銳化,以便于顯示、觀察或進一步分析與處理。通過對圖像的特定加工,将被處理的圖像轉化為對具體應用來說視覺品質和效果更“好”或更“有用”的圖像。

圖像增強是最基本最常用的圖像處理技術,常用于其他圖像處理的預處理階段。

(1)高通平滑、低通銳化;平滑模糊、銳化突出圖像細節

(2)濾波器還有帶通、帶阻等形式

(3)根據噪聲(椒鹽噪聲、高斯噪聲…)的不同,選用不同的濾波

(4)鄰域有4-鄰域、對角鄰域、8-鄰域,相對應的有鄰接,即空間上相鄰、像素灰階相似

(5)圖像邊緣處理:忽略不處理、補充、循環使用

(6)目前尚未圖像處理大多基于灰階圖像

将ace增強後的圖像資訊熵與圖像标準差的乘積作為目标函數, ace的增益因子a作為待尋優的變量;

使用pso算法對ace的增益因子a進行尋優,并傳回最優的增益因子;

将最優增益代入ace算法中,對圖像進行增強;

采用引導濾波對增強後的圖像進行降噪,提高可視化效果;

二、源代碼

%% 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'); % 顯示濾波後的圖像
           

三、運作結果

四、matlab版本及參考文獻

繼續閱讀