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

pr1

.docx
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
722 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций

Российской Федерации

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

учреждение высшего образования

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

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

_____________________________________________________________________________

Кафедра РАДИОТЕХНИКИ

Дисциплина «Технологии распознавания изображений и компьютерное зрение»

Практическая работа №1

«Обработка изображений»

Выполнили: студенты группы РТ-22,

бригада № 6

Спица М.А.

Стулин П.А.

Сараева Л.В.

Швецов Ф.П.

Проверил: к.т.н. доцент каф. РТ,

Коровин К.О.

________________________

Санкт-Петербург

2026

Задание 1: Корректировка низкоконтрастного изображения

Цель: Откорректировать низкоконтрастное изображение при помощи встроенных функций и используя CDF.

Теория:

Функция IPT imhist отображает гистограмму изображения, где ось x обозначает диапазон уровней интенсивности серого от 0 до 255, а ось y обозначает количество пикселей, относящихся к каждому уровню интенсивности серого.

Выравнивание гистограммы - это процесс растягивания гистограммы таким образом, чтобы она охватывала весь диапазон от 0 до 255. Значение цветопередачи в серых тонах может быть скорректировано, если гистограмму можно растянуть по всему диапазону значений, и это называется тональной коррекцией изображений. Если L — это общее количество уровней серого (обычно 256), а k - определенный уровень интенсивности, то значение гистограммы h(k) для уровня k, т.е. общее количество пикселей, появляющихся для уровня k после выравнивания, определяется следующим образом:

Листинг кода в MATLAB:

%%% Задание 1: откорректировать низкоконтрастное изображение

%%% По встроенным функциям

a=imread('lubimi_prepodavatel.jpg');

a=rgb2gray(a);

c=imadjust(a);

d=histeq(a);

%%% Теоретический расчет

amax=max(max(a));

r=0:amax;

L=256;

N=length(a)*length(a');

[counts, edges]=histcounts(a);

[countsd, edgesd]=histcounts(d);

[countsc, edgesc]=histcounts(c);

CDF1=cumsum(counts);

CDF1norm=CDF1/max(CDF1);

CDFd=cumsum(countsd);

CDFdnorm=CDFd/max(CDFd);

CDFc=cumsum(countsc);

CDFcnorm=CDFc/max(CDFc);

[testcounts,test] = imhist(a);

CDF=cumsum(testcounts);

h=round((CDF-min(CDF(CDF>0)))/(N-min(CDF(CDF>0)))*(L-1));

hman=uint8(h(double(a+1)));

[countsism, edgesism]=histcounts(hman);

CDFism=cumsum(countsism);

CDFismnorm=CDFism/max(CDFism);

%%% Графики

figure(10)

subplot(3,4,1); imshow(a); title('До коррекции')

subplot(3,4,2); imshow(d); title('После коррекции (histeq)')

subplot(3,4,3); imshow(c); title('После коррекции (imadjust)')

subplot(3,4,4); imshow(hman); title('После коррекции (Теор.)')

subplot(3,4,5); imhist(a); title('Гистограмма до коррекции')

subplot(3,4,6); imhist(d); title('Гистограмма до коррекции')

subplot(3,4,7); imhist(c); title('Гистограмма после коррекции (histeq)')

subplot(3,4,8); imhist(hman); title('Гистограмма после коррекции (Теор.)')

subplot(3,4,9); stairs(edges(2:end),CDF1norm); xlim([0 L-1]); ylim([0 max(CDF1norm)]); title('CDF До коррекции')

subplot(3,4,10); stairs(edgesd(2:end),CDFdnorm); xlim([0 L-1]); ylim([0 max(CDFdnorm)]); title('CDF после коррекции (histeq)')

subplot(3,4,11); stairs(edgesc(2:end),CDFcnorm); xlim([0 L-1]); ylim([0 max(CDFcnorm)]); title('CDF после коррекции (imadjust)')

subplot(3,4,12); stairs(edgesism(2:end),CDFismnorm); xlim([0 L-1]); ylim([0 max(CDFismnorm)]); title('CDF после коррекции (Теор.)')

Рис.1 Результат работы скрипта

Задание 2: Размытие выделенной части исходного изображения

Цель работы: Изучения пространственной фильтрации

Теория:

Для размытия изображения используется пространственная фильтрация. Для получения размытого изображения реализуется ФНЧ при помощи пространственной свертки маски размером 3х3,11х11,31х31 изображения

Листинг кода в MATLAB:

%%%%%%%%%%% Задание 2: Размытие изображение %%%%%%%%%%%%%%%%%

a=imread('lubimi_prepodavatel2.jpg');

a=rgb2gray(a);

figure(20)

[subImage, rect] = imcrop(a); % Появится курсор для выделения

imshow(subImage);

virez=double(subImage);

x1=fix(rect(2));

y1=fix(rect(2))+fix(rect(4));

x2=fix(rect(1));

y2=fix(rect(1))+fix(rect(3));

for i=2:size(virez,1)-1

for ii=2:size(virez,2)-1

svertka=conv2(virez(i-1:i+1,ii-1:ii+1),ones(3),'same');

svertkasr(i-1,ii-1)=svertka(2,2)/9;

end

end

svr1=uint8(svertkasr);

for i=6:size(virez,1)-5

for ii=6:size(virez,2)-5

svertka1=conv2(virez(i-5:i+5,ii-5:ii+5),ones(11),'same');

svertkasr1(i-5,ii-5)=svertka1(6,6)/121;

end

end

svr2=uint8(svertkasr1);

for i=16:size(virez,1)-15

for ii=16:size(virez,2)-15

svertka2=conv2(virez(i-15:i+15,ii-15:ii+15),ones(31),'same');

svertkasr2(i-15,ii-15)=svertka2(16,16)/961;

end

end

svr3=uint8(svertkasr2);

aism1=a;

aism2=a;

aism3=a;

aism1(x1+1:y1-1,x2+1:y2-1)=svr1;

aism2(x1+5:y1-5,x2+5:y2-5)=svr2;

aism3(x1+15:y1-15,x2+15:y2-15)=svr3;

%%% Графики

figure(20)

subplot(1,4,1); imshow(a); title('Исходная')

subplot(1,4,2); imshow(aism1); title('3x3')

subplot(1,4,3); imshow(aism2); title('11x11')

subplot(1,4,4); imshow(aism3); title('31x31')

Рис.2 Результат работы скрипта

Задание 3: Применение Лапласиана с ядрами 4 и 8

Листинг кода в MATLAB:

%%%%%%%%%%% Задание 3: Лапласиан с ядрами 4 и 8 %%%%%%%%%%%

a=imread('lubimi_prepodavatel3.jpg');

a=rgb2gray(a);

a1=double(a);

mx1=[0 -1 0; -1 4 -1; 0 -1 0];

mx2=[-1 -1 -1; -1 8 -1; -1 -1 -1];

%% Ядро 4

svertka3=conv2(a1,mx1,'same'); %% Свертка маски с изображением

svrt1=uint8(svertka3);

aitog1=a+svrt1; %% Сложение свертки с исходным изображением

%% Ядро 8

svertka4=conv2(a1,mx2,'same'); %% Свертка маски с изображением

svrt2=uint8(svertka4);

aitog2=a+svrt2; %% Сложение свертки с исходным изображением

%%% Графики

figure(30)

subplot(1,3,1); imshow(a); title('Исходная')

subplot(1,3,2); imshow(aitog1); title('Ядро 4')

subplot(1,3,3); imshow(aitog2); title('Ядро 8')

Рис.3 Результат работы скрипта

Задание 4: Применение нерезкого маскирования

Листинг кода в MATLAB:

%%%%%%%%%%% Задание 4: Нерезкое маскирование %%%%%%%%%%%%%%

a=imread('lubimi_prepodavatel2.jpg');

a=rgb2gray(a);

for i=16:size(a,1)-15

for ii=16:size(a,2)-15

svertka5=conv2(a(i-15:i+15,ii-15:ii+15),ones(31),'same');

svertkasr5(i-15,ii-15)=svertka5(16,16)/961;

end

end

svrt3=uint8(svertkasr5);

svrtdop3=padarray(svrt3,[(size(a,1)-size(svrt3,1))/2, (size(a,1)-size(svrt3,1))/2], 0, 'both');

aitog3=a-svrtdop3;

aitog4=aitog3+a;

%%% Графики

figure(40)

subplot(1,4,1); imshow(a); title('Исходная')

subplot(1,4,2); imshow(svrt3); title('Размытое')

subplot(1,4,3); imshow(aitog3); title('Маска')

subplot(1,4,4); imshow(aitog4); title('Нерезкое маскирование')

Рис.4 Результат работы скрипта

Соседние файлы в предмете Технологии распознавания изображений и компьютерное зрение