Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет_лаба5.docx
Скачиваний:
0
Добавлен:
25.04.2024
Размер:
3.92 Mб
Скачать

Анализ параметров одной функции

Далее, во второй части лабораторной работы необходимо провести исследование влияния заданного параметра одной из функций на получаемые результаты обработки. Необходимо протестировать заданную функцию при нескольких значениях.

Поскольку в качестве функции для исследования была предложена adapthisteq, и было выяснено, что имеются значительные различия в результатах между Python и MATLAB, то необходимо будет провести 2 сравнения для двух разных сред, а затем сравнить полученные результаты между собой.

Сперва, на рисунках 9 и 10 показаны результаты сравнения картинок на Python.

Рисунок 9 – Сравнение изображений

Рисунок 10 – Сравнение гистограмм яркости

Из данных рисунков видно, что параметр B влияет на степень сглаживания гистограммы яркости и повышения контрастности. Если же углубится в суть работы алгоритма, то размер ядра (один из элементов которого изменяется в ходе данного эксперимента) показывает размер той области изображения, с которым работает исходный алгоритм. И чем выше данный параметр, тем больше по размеру область изображения.

Далее, на рисунках 11 и 12 показаны результаты запуска точно такого же эксперимента, но уже в среде MATLAB. Исходный код для запуска эксперимента представлен в листинге 2.

Листинг 2. Запуск эксперимента в MATLAB.

landscape = imread("1.jpg");

kernels = [2, 4, 6, 8, 32, 64];

results = cell(1, 6);

for i = 1:6

disp(['Расчет при размере ядра: ', num2str(kernels(i))]);

results{i} = image_adapthisteq(landscape, [kernels(i), kernels(i)], 0.02, false);

end

compare6image(results, kernels);

function compare6image(imgs, params)

fig1 = figure('Name', 'Изображения', 'Position', [100, 100, 1400, 700]);

for i = 1:6

subplot(2, 3, i, 'Parent', fig1);

imshow(imgs{i});

title(['Ядро: ', num2str(params(i))]);

axis off;

end

fig2 = figure('Name', 'гистограммы яркости', 'Position', [100, 100, 1400, 700]);

for i = 1:6

subplot(2, 3, i, 'Parent', fig2);

imhist(im2gray(imgs{i}), 256);

title(['Ядро: ', num2str(params(i))]);

end

end

function J = image_adapthisteq(img, kernel_size, clip_limit, convert2lab)

if convert2lab

LAB = rgb2lab(img);

L = LAB(:,:,1) / 100;

L = adapthisteq(L, 'ClipLimit', clip_limit, 'NumTiles', kernel_size);

LAB(:,:,1) = L * 100;

J = lab2rgb(LAB);

else

gray_img = rgb2gray(img);

J = adapthisteq(gray_img, 'ClipLimit', clip_limit, 'NumTiles', kernel_size);

end

end

Рисунок 11 – Сравнение изображений

Рисунок 12 – Сравнение гистограмм яркости

Из полученных рисунков видно, что при маленьком размере ядра изображение очень четкое (как при огромных значениях в предыдущем случае). Однако с увеличением размера на картинке начинают появляться артефакты, а при достаточно больших числа картинка вообще перестает быть различимой.

Если же сравнивать гистограммы яркости между собой, то в обоих случаях сначала идет тренд на сглаживание гистограммы, а под конец гистограмма начинает уходить в сторону белого цвета, из-за чего картинка становится трудноразличимой.

Выводы

Таким образом, подводя итог к проделанной работе, можно сделать вывод о том, что мною были изучены методологии управления контрастностью изображений с целью улучшения их визуального восприятия, реализованы типовые методы контрастирования изображений в среде Python, а также было проведено сравнение реализованных методов между двумя средами программирования: Python и MATLAB. Выяснилось, что при реализации функции adapthisteq на Python получаемые результаты имеют некоторые отличия от результатов, получаемых в MATLAB.

Соседние файлы в предмете Мультимедиа технологии