Как создать таблицу соответствия, содержащую функцию переноса для увеличения / уменьшения яркости изображения на заданную величину - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь создать функцию, которая возвращает таблицу соответствия, содержащую передаточную функцию для увеличения / уменьшения яркости, следующим образом:

if inputvalue < -c
    outputvalue = 0
else if inputvalue > 255 - c
    outputvalue = 255
else
    outputvalue = inputvalue + c

Вот моя попытка ...

function Lut = brightnessLUT(c)

if c < -c 
    Lut = 0;
else if c > 255 - c
    Lut = 1:256;
else
    Lut = 1:c + c;
end

Lut = uint8(Lut);
end

Это было бы правильно? Когда я использую другую функцию I для увеличения введенного изображения величиной c, это, похоже, не влияет на яркость вообще, а введенное изображение остается неизменным. Любая помощь будет великолепна.

function Iout = enhanceBrightness(Iin,c)
Lut = brightnessLUT(c);
Iout = intlut(Iin,Lut);
end

1 Ответ

1 голос
/ 20 февраля 2020

Решение проще без использования if и else:

  • Начните с номинальной LUT 0:255.
  • Добавьте c к номинальной LUT.
  • Ограничить результат диапазоном [0, 255], используя min и max.
    Примечание: в MATLAB вам не нужно ограничивать диапазон [0, 255], потому что uint8(Lut) делает это неявно.

Вот код:

function Lut = brightnessLUT(c)
    Lut = (0:255) + c;
    % Note: In MATLAB you don't need to limit the range to [0, 255], because uint8(Lut) does it implicitly.  
    Lut = max(min(Lut, 255), 0); %Limit Lut to range [0, 255].
    Lut = uint8(Lut);
end

Как правило, рекомендуется использовать min и max для определения порога.

Я добавил пороговый код, потому что я предполагаю, что вы собираетесь использовать его в качестве подготовки к реализации на другом языке программирования (или просто для изучения того, как построить LUT в целом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...