Нормализация интенсивности, матлаб - PullRequest
3 голосов
/ 22 июля 2011

У меня есть 3D-точки реального мира, которые я хочу проецировать на самолет.Большинство значений интенсивности [0-1] попадают в нижнюю область (около нуля).

Пожалуйста, смотрите изображение «до» его ниже.before normalization of data

Я пытался нормализовать значения

Col_ = Intensity;% до

max (Col _) = 0,46; min (Col _) = 0,06;

Col = (Col_-min (Col _)) / (max (Col _) - min (Col_));% после

max (Col) = 1; min (Col) = 0;

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

After normalization of data

Результат по-прежнему большая часть черного региона. Любое предложение.Как я могу растянуть мою информацию об интенсивности.С уважением,!

Ответы [ 3 ]

1 голос
/ 22 июля 2011

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

Например: http://en.wikipedia.org/wiki/Histogram_equalization

Если у вас есть обработка изображенияtoolbox, Matlab сделает это за вас: http://www.mathworks.com/help/toolbox/images/ref/histeq.html

Похоже, что у вас очень мало значений вне первого бина, если вам не нужно сохранять уникальность интенсивностей, вы можете просто масштабироватьбольшее количество и обрезать несколько, которые превышают 1.

1 голос
/ 22 июля 2011

Когда я нормализую интенсивность, я делаю что-то вроде этого:

Col = Col - min(Col(:));
Col = Col/max(Col(:));

Это нормализует ваши данные в диапазоне [0,1].

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

Col_scaled = log(1+Col);

Линейное масштабирование с такими данными у меня редко работает. Использование функции log сродни настройке гаммы для целей визуализации.

0 голосов
/ 22 июля 2011

Я думаю, что единственное, что вы можете здесь сделать, это уменьшить диапазон.После нормализации сделайте следующее:

t = 0.1;
Col(Col > t) = t;

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

...