Я пытаюсь выполнить функцию гамма-коррекции в MATLAB, и, мягко говоря, я получаю некоторые смешанные результаты. Где использование гамма-константы ниже 1 (например, 0,5) дает мне более яркое изображение, а использование константы выше 1 дает мне более темное изображение, что неверно, поскольку оно должно давать противоположные результаты (константа ниже 1 должна быть темнее и постояннее). значение выше 1 должно быть ярче).
Вот код, над которым я работал, на основе следующей формулы, которую я нашел при просмотре книги по обработке изображений:
f (v): = 255 · (v / 255) 1 / GAMMA
Где (если я правильно понял) v - входное изображение, а GAMMA - постоянная.
А воткод в MATLAB:
%%Fucnion de gamma
%%Entradas
%% I = imagen original
%% gamma = constante de gamma
%%Salidas
%% G = imagen transformada
function [G] = FuncionGamma(I,gamma)
G=zeros(size(I));
for i=1: size(I, 1)
for j=1: size(I, 2)
G(i,j) = double(255 * (I(i,j)/255)).^(1/gamma);
end
end
G=uint8(G);
end
А вот сценарий для его вызова:
clc;
clear;
close all;
gamma = 0.5;
gamma2 = 1.5;
I = imread("mantis.jpg");
[IMG1] = FuncionGamma(I,gamma);
[IMG2] = FuncionGamma(I,gamma2);
figure;
imshow(IMG1);
figure;
imshow(IMG2);
Вот результаты:
Исходное изображение:
Гамма = 0,5
И гамма = 1,5
Что яделать неправильно?