Как я нормализую изображение?

Проблема может быть в конфигурации компилятора gcc. Вы можете скачать скомпилированный файл .whl с https://pypi.org/project/supplychainpy/#files . Обратите внимание, что файлы *-macosx_10_6_x86_64.whl предназначены для macosx.

9
задан Nick Bolton 29 March 2009 в 18:23
поделиться

5 ответов

Некоторый псевдокод как это масштабировал бы значения линейно от одного диапазона до другого

oldmin=-500
oldmax=1000
oldrange=oldmax-oldmin;

newmin=0
newmax=255;
newrange=newmax-newmin;

foreach(oldvalue)
{
    //where in the old scale is this value (0...1)
    scale=(oldvalue-oldmin)/oldrange;

    //place this scale in the new range
    newvalue=(newrange*scale)+newmin
}
27
ответ дан 4 December 2019 в 06:27
поделиться

Ваш вопрос не очень ясен, таким образом, я собираюсь предположить, что Вы делаете некоторую обработку изображений и результаты, которые Вы получаете, значения от-500 до 1 000, и теперь необходимо сохранить цвет в файл, где каждое значение должно быть между 0 и 255.

Как Вы делаете это действительно очень зависит в приложении, что является действительно значением результатов и что точно Вы хотите сделать. Две основных опции:

  • зафиксируйте значения - что-либо под 0 Вы заменяете 0, и что-либо выше 255 Вы заменяете 255. Вы захотите сделать это, например, если Ваша обработка изображений будет некоторой интерполяцией, которая действительно не должна достигать этих значений
  • Линейная нормализация - линейно может Ваше минимальное значение к 0 и Ваше максимальное значение к 255. Конечно, необходимо будет сначала найти минимум и максимум. Вы делаете:

    v = (origv - min)/(max - min) * 255.0
    

То, что это делает, является первой картой значения к [0,1] и затем расширьте их назад к [0,255].

Третья опция к смешиванию и подгонке между этими двумя опциями. Ваше приложение могло бы потребовать, чтобы Вы рассматривали отрицательные величины как ненужные значения и зафиксировали их к 0 и положительные значения для линейного отображения на [0,255].

7
ответ дан 4 December 2019 в 06:27
поделиться

Сначала сделайте все это положительным. Если минимум-500, затем добавляют 500 ко всем значениям. Затем минимум был бы 0, и максимум будет 1500.

Затем это - просто правило три, и у Вас есть он:

[value in 0,255] = 255*(Pixel/1500)
3
ответ дан 4 December 2019 в 06:27
поделиться

Некоторый псевдо код может помочь:

foreach( pixel_value in pixel_values): # between -500 and 1000

    position = (pixel_value + 500) / 1500 # gives you a 0 to 1 decimal
    new_value = int(postion * 255) # or instead of casting, you could round it off

Это - код Python между прочим.

1
ответ дан 4 December 2019 в 06:27
поделиться

Создайте две переменные, MinInputValue и MaxInputValue. Инициализировать MinInputValue к очень большому положительному числу (выше, чем самое большое пиксельное значение Вы когда-либо ожидаете видеть), и MaxInputValue к очень большому отрицательному числу (ниже, чем самое низкое пиксельное значение Вы когда-либо ожидаете видеть).

Цикл по каждому пикселю в изображении. Для каждого пикселя, если пиксельное значение PixelValue ниже, чем MinInputValue, набор MinInputValue кому: PixelValue. Если пиксельное значение выше, чем MaxInputValue, набор MaxInputValue кому: PixelValue.

Создайте новую переменную, InputValueRange, и набор это к MaxInputValue - MinInputValue.

После того как это сделано, цикл по каждому пикселю в изображении снова. Для каждого пикселя PixelValue, вычислите значение выходного пикселя как 255.0 * (PixelValue - MinInputValue) / InputValueRange. Можно присвоить это новое значение назад оригиналу PixelValue, или можно установить соответствующий пиксель в выходном изображении того же размера.

0
ответ дан 4 December 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: