Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 1 / 1
Регистрация: 14.12.2022
Сообщений: 91

Реализация алгоритма медианной фильтрации Huang

15.05.2024, 16:26. Показов 2011. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите с реализацией алгоритма Huang’s O(n) median filtering algorithm.
Псевдокод алгоритма показан на рисунке Screenshot_1.png. Но я не понимаю, что значит операция Remove (предположу, что это значит удалить пиксель), add.
Мои предположения:
Add - добавляем значение пикселя X(i+k,j+r) в гистограмму H
Remove - удаляем значение пикселя X(i+k,j−r−1) из H

У них там написано Initialize kernel histogram H, не понимаю как построить гистограмму H.

полный текст статьи в файле ctmf.pdf. Может кто-нибудь делал такое? Или хотя бы поясните как читать псевдокод на рисунке Screenshot_1.png?
Миниатюры
Реализация алгоритма медианной фильтрации Huang  
Вложения
Тип файла: pdf ctmf.pdf (1,008.2 Кб, 17 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.05.2024, 16:26
Ответы с готовыми решениями:

Реализация медианной фильтрации изображения
Помогите реализовать медианную фильтрацию изображения на с++.:cry::wall: Или хотя бы опишите алгоритм. Буду весьма благодарна:)

алгоритм медианной фильтрации
привет. Поделитесь хорошей статьей о медианой фильтрации одномерного сигнала. Чтоб с выводами была с графиками с расчетами.

Написать программу реализации медианной фильтрации
3 написать программу реализации медианной фильтрации, суть состоит в том, что дана матрица изображения по ней шаг за шагом идёт фильтрующая...

28
2 / 1 / 1
Регистрация: 14.12.2022
Сообщений: 91
20.05.2024, 10:32  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Инициализация разве не O(r)?
Вы правы, инициализация гистограммы равна О(r). И когда окно двигается по изображению, то выполняется r операций сложения и r операций вычитания, т.е. скорость тоже O(r). Тогда я не понимаю откуда авторы взяли скорость О(1)? Еще раз приведу скриншот.
Миниатюры
Реализация алгоритма медианной фильтрации Huang  
0
2 / 1 / 1
Регистрация: 14.12.2022
Сообщений: 91
20.05.2024, 10:50  [ТС]
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Какой алгоритм применили для реализации Y = median(H)?
Перебираю значения от 0 до 256 (256 градаций серого), суммирую значения гистограммы до тех пор пока count не станет больше (r**2) / 2, как только выполняется это условие, то порядковый номер i является медианой
def median(H, kernel_size):
count, median = 0, 0
for i in range(0,256):
count += H[i]
if count > ((kernel_size)**2) / 2:
median = i
break
else:
median = i
return median

сейчас попробую на while переделать, может быстрее будет

Добавлено через 14 минут
Цитата Сообщение от mihafiz97 Посмотреть сообщение
сейчас попробую на while переделать, может быстрее будет
def median(H, kernel_size):
count, i = 0, 0
while count < ((kernel_size**2)) / 2 and i < 256:
count += H[i]
i += 1
return i - 1

Замена цикла for на цикл while ускорения не дало.
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,798
20.05.2024, 12:12
У меня такая мысль... Нужно хранить не просто гистограмму, но и ее count при расчете медианы в median(). Нет необходимости каждый раз подсчитывать count заново, пересчитать надо.
0
2 / 1 / 1
Регистрация: 14.12.2022
Сообщений: 91
20.05.2024, 13:47  [ТС]
Цитата Сообщение от Mikhaylo Посмотреть сообщение
У меня такая мысль... Нужно хранить не просто гистограмму, но и ее count при расчете медианы в median(). Нет необходимости каждый раз подсчитывать count заново, пересчитать надо.
Это разве придаст скорость алгоритму О(1), все равно операции сложения и вычитания столбцов дают О(r)
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,798
20.05.2024, 15:43
А мне кажется, что авторов заботила только та часть алгоритма, которая внутри циклов 1...n, 1...m. Инициализация снаружи этих циклов и поэтому не столь сильно влияет на результат. Тело внутреннего цикла имеет сложность О(1).

Не сохраняют ли они в памяти n квадратных гистограмм? Тогда сложность будет, действительно, О(1), но память немного затрачивается.

Добавлено через 47 минут
Не знаю, почему, но они операции Add и Remove заменили на прибавление/вычитание столбцевых гистограмм и считают их О(1).
При этом медиана в среднем вычисляется как (2*r+1)^2/2 операций. Это O(r^2). Это не профанация, они позже эти операции подсчитывают.

Я бы оптимизировал вычисление медианы, запоминая count в median() для последующего пересчета.

Добавлено через 5 минут
Сообразил. Смотрите, r может быть равно 512, 1024, 8192, но сложений и вычитаний при Add/Remove всегда будет 256 для изображения в серых тонах.
0
2 / 1 / 1
Регистрация: 14.12.2022
Сообщений: 91
20.05.2024, 16:06  [ТС]
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Сообразил. Смотрите, r может быть равно 512, 1024, 8192, но сложений и вычитаний при Add/Remove всегда будет 256 для изображения в серых тонах.
Можете пояснить ? Я не совсем понял, я беру апертуру kernel_size = 2*r+1, если я беру r=1, то у меня на итерацию по столбцам 3 сложения и 3 вычитания, если r=2, то соответственно 5 сложений и 5 вычитаний и чем больше r, тем больше пикселей участвуют в операциях сложения и вычитания, значит и алгоритм медленнее выполняется.
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,798
20.05.2024, 17:48
Не путайте квадрат-апертуру с гистограммой H. Квадрат содержит (2*r+1)^2 чисел, а гистограмма всегда 256 чисел и 256 счетчиков для greyscale-изображения. Add/Remove заменяем на сложение/вычитание гистограмм.
0
2 / 1 / 1
Регистрация: 14.12.2022
Сообщений: 91
21.05.2024, 10:10  [ТС]
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Не путайте квадрат-апертуру с гистограммой H. Квадрат содержит (2*r+1)^2 чисел, а гистограмма всегда 256 чисел и 256 счетчиков для greyscale-изображения. Add/Remove заменяем на сложение/вычитание гистограмм.
Вы имеете ввиду вычитание всей гистограммы? Например, я инициализировал H 3x3, затем по псевдокоду я должен H посчитать для первой итерации как H = H + h(2) - h(-1), где h2 - это столбец справа от H, а h(-1) это столбец слева от H

Допустим H = {0:1, 1:3, 3:0, ...., 255:5}
h(2) = {0:2, 1:2, 3:0, ...., 255:1}
h(-1) ={0:5, 1:5, 3:4, ...., 255:6}

Тогда получаем H = {0:-2, 1:0, 3:-4,...,255:0}. У меня выходят отрицательные значения количества пикселей для 0 и 3 чего быть не должно. В моем понимании сложение и вычитание гистограмм это сложение и вычитание значений количества пикселей. Может тут как-то по другому нужно складывать и вычитать?
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,798
21.05.2024, 10:36
Вы должны проигнорировать h(-1), как выходящий за пределы. Такие столбцы не прибавляются и не вычитаются. Счётчики отрицательными не должны быть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.05.2024, 10:36

Как можно сделать чтобы пользователь мог сам выбирать окно при медианной фильтрации изображения
Нашел на просторах интернета алгоритм по медианной фильтрации изображений. Я хотел сделать его удобным для пользователя, дав ему...

Блок-схема алгоритма фильтрации строк в мемо
Нарисовать блок-схему к этой проге(я знаю как нарисовать иф, фор, и мемо, а остальное не знаю): void __fastcall...

Реализация поиска, фильтрации
Помогите решить проблему, проблема такова: Надобно реализировать простую базу данных и поиск по ней и тд тп что только не лень, проблема у...

Реализация фильтрации в модуле приема данных
Всегда интересовало: помог бы или нет программатор, понимающий язык высокого уровня в решении задач анализа данных на рынке такие...

Реализация Байесовской фильтрации изображения (или хотя бы Марковской)
Помогите пожалуйста реализовать Байесовскую фильтрацию изображения, или хотя бы алгоритм. Или хотя бы какую нибудь модификацию, например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне. Это уже новая модель, модель сукцессии грибной. потоки фосфора, азота. Углерода. 5 видов организмов. Я даже. . .
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026 . . .
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки План доработки модели динамики микоризных симбиозов (EcM с гистерезисом) Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru