На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Нормализация гистограммы , алгоритм
    здравствуйте. Наткнулся на статью Цифровая обработка изображения, не могу разобраться с методом Нормализации гистограммы. Метод описан так:
    Цитата
    Еще более можно улучшить контраст, используя нормализацию гистограммы. При этом на весь максимальный интервал уровней яркости [0, 255] растягивается не вся гистограмма, лежащая в пределах от fмин до fмакс, а её наиболее интенсивный участок (fмин', fмакс'), из рассмотрения исключаются малоинформативные "хвосты". На рис. 2б исключено 5% пикселов.
    Не понимаю, что они имеют ввиду под словом "растягивается" - линейное растяжение или какое? Кто знаком с этим, подскажите. Или поделитесь своими догадками)
      Линейное растяжение, IMHO.
        у меня в курсе систем цифровых обработок изображений шло как выделение поддиапазона:
        ExpandedWrap disabled
          for i:=0 to Image1.Picture.Bitmap.Height-1 do begin
           Line:=Image1.Picture.Bitmap.ScanLine[i];
           for j:=0 to Image1.Picture.Bitmap.Width*3-1 do begin
            temp:=round(255*(Line^[j]-c1)/(c2-c1));
            goodc0(temp); //функция преобразования параметра в положительное от 0 до 255.
            Line^[j]:=temp;
           end;
          end;
          Lamer#1,напиши, пожалуйста, комментарии, а то я не совсем понимаю.
          ExpandedWrap disabled
            for j:=0 to Image1.Picture.Bitmap.Width*3-1 do begin //почему тут умножаем на 3?
              temp:=round(255*(Line^[j]-c1)/(c2-c1));//что такое с1,с2 и что имеется ввиду под Line^[j]
              goodc0(temp); //функция преобразования параметра в положительное от 0 до 255.
              Line^[j]:=temp;

          два циклы необходимы, чтобы пройтись по каждому пикселю изображения?
          спасибо!
            CoGNaC, думаю хелп в помощь по сканлайну и битмапу. у меня 24 битные бмп файлы были.
            с1 с2 - это (fмин', fмакс') твои.
              CoGNaC
              для каждого канала RGB считаешь вес значений, далее по коэффициенту (подбирается экспериментально или задается интерактивно) находишь первое значение в начале и конце гистограммы которое >= заданному коэффициенту и таким образом находится минимум и максимум который и нужно растянуть в диапазон 0..255.
                x128, спасибо за ответ. Что вы имеете ввиду под словом "канал RGB" - значение яркости пикселя? С минимума и максимума я понял. А вот с растяжением как раз у меня возникают трудности, растягивать с помощью линейной функции?)
                  Цитата CoGNaC @
                  Что вы имеете ввиду под словом "канал RGB" - значение яркости пикселя?

                  значение яркости для отдельно взятого компонента R, G и B.
                  Цитата CoGNaC @
                  А вот с растяжением как раз у меня возникают трудности, растягивать с помощью линейной функции?

                  все зависит от задачи, в простом случае линейно:
                  к=округлить((к-минимум)*255/(максимум-минимум)) где к=текущий пиксел компонента.
                    Спасибо всем! И отдельный вопрос, как подсчитать сложность выполнения алгоритма? :huh:
                      В данном случае:
                      построение гистограммы O(N), где N - число пикселей;
                      определение границ O(M), где M - число градаций, как правило M много меньше N;
                      нормализация O(N).
                      В результате получаем O(N) - сложность пропорциональна размеру картинки, быстрее просто нельзя
                      Даже более сложная обработка, типа выравнивания гистограммы или подбор гаммы не увеличивает порядок сложности.
                      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0643 ]   [ 14 queries used ]   [ Generated: 2.06.24, 02:08 GMT ]