1. 소프트웨어 버전
매트랩2021a
2. 이 알고리즘에 대한 이론적 지식
안개가 자욱한 이미지의 영역 분할에 유전 알고리즘을 적용하여 이미지를 지웁니다. 이 방법에서는 유전 알고리즘을 사용하여 근거리 및 원거리 이미지의 분할 임계값을 구하여 이미지를 분할한 다음, 지역 경계 효과가 발생하지 않도록 템플릿을 이동하여 전체 이미지를 상응하게 선명하게 합니다. 마지막으로 획득한 이미지를 융합하여 이미지 품질을 더욱 개선하고 안개가 낀 날의 이미지 저하를 효과적으로 개선하며 이미지 선명도를 개선합니다.
여기에는 주로 다음 단계가 포함됩니다.
유전 알고리즘은 이미지를 분할하기 위해 근거리 및 원거리 장면의 분할 임계값을 찾습니다.
템플릿을 이동하여 그에 따라 전체 이미지를 선명하게 합니다.
마지막으로 획득한 영상에 대한 정보융합 수행
이 논문의 자세한 이론은 당사에서 제공한 다음 참고 문헌을 참조할 수 있습니다.
3. 핵심 코드
clc;
clear;
close all;
warning off;
%全局变量的定义
globals
%读取图片
A = imread('PIC\1.bmp');
B=rgb2gray(A);
figure;
subplot(121);
imshow(B);title('原雾图')
C=B;
%加载函数路径
addpath 'functions'
%%
%该方法首先用遗传算法求出近景和远景的分割阈值将图像分割出来
%该方法首先用遗传算法求出近景和远景的分割阈值将图像分割出来,
%该方法首先用遗传算法求出近景和远景的分割阈值将图像分割出来,
lchrom = 8; %染色体长度
popsize = 10; %种群大小
cross_rate = 0.7; %交叉概率
mutation_rate = 0.4; %变异概率
maxgen = 150; %最大代数
[m,n] = size(C);
%初始种群
func_initpop;
%遗传操作
for gen=1:maxgen
func_fitness_order(); %计算适应度值及排序
func_select(); %选择操作
func_crossover(); %交叉
func_mutation(); %变异
end
%最佳阈值
Level = floor(yuzhi(1,maxgen));
[m,n]=size(C);
for i=1:m
for j=1:n
if C(i,j) <= Level
C(i,j)=0;
else
C(i,j)=255;
end
end
end
subplot(122);
imshow(C);
title('根据遗传算法得到的阈值分割后的雾图');
%%
%%
%然后通过移动模板对整个图像进行相应的清晰化处理,防止区域边界效应的产生,
%然后通过移动模板对整个图像进行相应的清晰化处理,防止区域边界效应的产生,
%然后通过移动模板对整个图像进行相应的清晰化处理,防止区域边界效应的产生,
%分别报出分割后的两个部分的图像
Near = zeros(m,n);
Far = zeros(m,n);
for i=1:m
for j=1:n
if C(i,j) == 0%近图
Near(i,j) = B(i,j);
end
if C(i,j) == 255%远图
Far(i,j) = B(i,j);
end
end
end
Near2 = zeros(m,n);
Far2 = zeros(m,n);
FF = zeros(m,n);
FF2 = zeros(m,n);
%假设移动模块的大小为4*4
WIN = 1;
a1 = 0.4;%处理前后两个图片的所占权重
a2 = 0.7;%处理前后两个图片的所占权重
Bmax = max(max(B));
r = Level/double(Bmax);
for i=1:m/WIN
for j=1:n/WIN
s1 = (i-1)*WIN+ceil(WIN/2);
s2 = (j-1)*WIN+ceil(WIN/2);
if C(s1,s2) == 0%近图
tmp1 = Near((i-1)*WIN + 1 : i*WIN,(j-1)*WIN + 1 : j*WIN);
FF((i-1)*WIN + 1 : i*WIN,(j-1)*WIN + 1 : j*WIN) = 1.05*tmp1;
end
if C(s1,s2) == 255%远图
tmp2 = Far((i-1)*WIN + 1 : i*WIN,(j-1)*WIN + 1 : j*WIN);
%进行增强
FF((i-1)*WIN + 1 : i*WIN,(j-1)*WIN + 1 : j*WIN) = double((tmp2 - 130*ones(WIN,WIN)*r)/(1 - r));
end
end
end
figure;
subplot(121);
imshow(B);title('原雾图')
subplot(122);
imshow(uint8(FF));title('处理后的雾图')
%%
%%
%最后对数据进行融合
%最后对数据进行融合
%最后对数据进行融合
for i=1:m
for j=1:n
if C(i,j) == 0%近图
FF2(i,j) = a1*FF(i,j)+(1-a1)*B(i,j);
end
if C(i,j) == 255%远图
FF2(i,j) = a2*FF(i,j)+(1-a2)*B(i,j);
end
end
end
figure;
subplot(121);
imshow(B);title('原雾图')
subplot(122);
imshow(uint8(FF2));title('处理后的雾图')
%%
4. 작업 단계 및 시뮬레이션 결론
★유전자 알고리즘은 이미지를 분할하기 위해 근거리 및 원거리 장면의 분할 임계값을 찾습니다.
5. 참고문헌
A09-26