
lr3
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования
«Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М. А. Бонч-Бруевича»
___________________________________________________________________________
Кафедра радиосистем и обработки сигналов
Дисциплина «Обработка сигналов в радиотехнических системах»
Лабораторная работа №3
ОБНАРУЖЕНИЕ И РАЗЛИЧЕНИЕ ОБЪЕКТОВ
ИНТЕРЕСА НА ИЗОБРАЖЕНИЯХ
Выполнили: ст. гр.
Проверил: ст. преподаватель
Егоров С.Г.
Санкт-Петербург
2024
1)Воспроизвести код из методички для построения точечных объектов: Рис. 3.4 Модели группы точечных объектов (слева) и протяженного объекта квадратной формы (справа)
function[S,MN]=func1_rect(m,n,M,N,x,y)
%rectangular signal S =(M,N)in
%rectangular window (m,n)
%m-vertical, n-horizontal
%M-vertical, N-horizontal
%x,y - shift wrt the center of window
N1=floor(N/2)-1; M1=floor(M/2)-1;
m1=ceil(m/2)+1; n1=ceil(n/2)+1;
S = zeros(m,n);
MN=M*N %cell number in the signal window
for i=m1-M1-1+y:m1+M1+y+1
for j=n1-N1-1+x:n1+N1+x+1
S(i,j)=1;
end
end
Код для отображения протяженного объекта квадратной формы
m = 100;
n = 100;
M=25;
N=25;
x = 0;
y =0;
[S,MN]=func1_rect(m,n,M,N,x,y);
imshow(S)
Результат работы кода
Код для отображения группы точечных объектов
clear
clc
m = 2000;
n = 2000;
M=25;
N=25;
x = 0;
y = 0;
S = zeros(2000,2000);
Sum = zeros(2000,2000);
for x = -500:50:500
for y= -500:50:500
[S,MN]=func1_rect(m,n,M,N,x,y);
Sum = S+Sum;
end
end
imshow(Sum)
Результат работы кода
2)Реализовать функции matlab для описанных в разделе 3.3 методических указаний адаптивных порогов:
Функция 1: Log-detector
Функция 2: H-detector
Функция 3: M-detector
Функция 4: A-detector
Код для зашумления сигнала
shum = abs((randn(m,n).*0.2));
Sh= Sum+shum;
Код реализации Log-detector
sum_x = 0;
for h = 1:10
for p = 1:10
for j = (h-1)*m/10+1:(m/10)*h
for i = (p-1)*n/10+1:(n/10)*p
sum_x = log(shum(i,j))+sum_x;
end
end
C1 = 2e-7;
C0 = 0.3;
Y_log = C1*sum_x+C0;
Y_log_detect = exp(Y_log)
sum_x =0;
for j = (h-1)*m/10+1:(m/10)*h
for i = (p-1)*n/10+1:(n/10)*p
if (Sh(i,j) > Y_log_detect )
Good_frame_logdetect(i,j) = 1;
end
end
end
Y_log_detect = 0;
end
end
figure(1)
tiledlayout(1,2)
nexttile
imshow(Sh)
nexttile
imshow(Good_frame)
Результат работы кода (шум*0.6)
Код реализации H-detector
sum_shum_Hd1 = 0;
sum_shum_Hd2 = 0;
for j = 1:m/2
for i = 1:n
sum_shum_Hd1 = shum(i,j) +sum_shum_Hd1;
end
end
for j = m/2:m
for i = 1:n
sum_shum_Hd2 = shum(i,j) +sum_shum_Hd2;
end
end
Ch = 0.00018;
Max_H = max(sum_shum_Hd2,sum_shum_Hd1);
Y_H_detect = Ch*Max_H
for j = 1:m
for i = 1:n
if (Sh(i,j) > Y_H_detect )
Good_frame_H_detect(i,j) = 1
end
end
end
figure (2)
tiledlayout(1,2)
nexttile
imshow(Sh)
nexttile
imshow(Good_frame_H_detect)
Результат работы кода (шум*0.3)
Код реализации М-detector
max_shum = 0;
for j = 1:m
for i = 1:n
if (shum(i,j) > max_shum )
max_shum = shum(i,j);
end
end
end
max_shum
for j = 1:m
for i = 1:n
if (Sh(i,j) > max_shum )
Good_frame_M_detect(i,j) = 1;
end
end
end
figure (3)
tiledlayout(1,2)
nexttile
imshow(Sh)
nexttile
imshow(Good_frame_M_detect)
Результат работы кода (шум*0.25)
Код реализации А-detector
cA = 5;
Median = median(shum);
Median = median(Median);
A_detect = cA*Median
for j = 1:m
for i = 1:n
if (Sh(i,j) > A_detect )
Good_frame_A_detect(i,j) = 1;
end
end
end
figure (4)
tiledlayout(1,2)
nexttile
imshow(Sh)
nexttile
imshow(Good_frame_A_detect)
Результат работы кода (шум*0.3)
3) Выполнить вопросы для исследования (просто выписаны из подразделов методички для удобства)
1. Исследовать различные варианты формирования порога с использованием функций adaptthresh, imopen(y,se). Сравнить с порогом по Отсу graythresh.
2. Исследовать различные варианты формирования помеховых окон для адаптации порога с использованием функций adaptthresh, imboxfilt и imopen(y,se). Сравнить с оптимальными значениями порога при обнаружении на стационарном фоне с известным распределением
см. файлы Lab3_example и справку к функциям:
adaptthresh (exponenta.ru)
otsuthresh (exponenta.ru)
graythresh (exponenta.ru)
figure(5)
LEXA = imread('LEXA.jpg');
LEXA = rgb2gray(LEXA);
porog_ab = adaptthresh(LEXA,0.4);
porog_gt = graythresh(LEXA);
LEXA_gr = imbinarize(LEXA,porog_gt);
LEXA1 = imbinarize(LEXA,porog_ab);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
se = strel('disk',5);
afterOpening = imopen(LEXA,se);
tiledlayout(3,1)
nexttile
imshowpair(LEXA,LEXA_gr,'montage')
nexttile
imshowpair(LEXA,LEXA1,'montage')
nexttile
imshowpair(LEXA,afterOpening,'montage')
figure (6)
BI= conv2(LEXA, ones(3)/25, 'same'); % усредняющее окно
LEXA_is = imboxfilt(LEXA,11);
tiledlayout(3,1)
nexttile
imshowpair(LEXA,BI,'montage')
nexttile
imshowpair(LEXA,porog_ab,'montage')
nexttile
imshowpair(LEXA,LEXA_is,'montage')