Добавил:
t.me Фулл всегда есть, ФОЭ ТОЭ ТЭЦ Электроника, КЭТ ИиКГ и тд https://t.me/whitedevil752 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lr3

.docx
Скачиваний:
8
Добавлен:
17.06.2024
Размер:
1.77 Mб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Федеральное государственное образовательное бюджетное учреждение

высшего профессионального образования

«Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М. А. Бонч-Бруевича»

___________________________________________________________________________

Кафедра радиосистем и обработки сигналов

Дисциплина «Обработка сигналов в радиотехнических системах»

Лабораторная работа №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. Функция 1: Log-detector

    2. Функция 2: H-detector 

    3. Функция 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. 1. Исследовать различные варианты формирования порога с использованием функций adaptthresh, imopen(y,se). Сравнить с порогом по Отсу graythresh.

    2. 2. Исследовать различные варианты формирования помеховых окон для адаптации порога с использованием функций adaptthresh, imboxfilt и imopen(y,se). Сравнить с оптимальными значениями порога при обнаружении на стационарном фоне с известным распределением

    3. см. файлы Lab3_example и справку к функциям:

      1. adaptthresh (exponenta.ru)

      2. otsuthresh (exponenta.ru)

      3. 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')

Соседние файлы в предмете Обработка сигналов в радиотехнических системах