Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 10

Медианный фильтр

21.04.2019, 12:14. Показов 15234. Ответов 0

Студворк — интернет-сервис помощи студентам
Времени доброго!
Попалась интересная задача по программированию
Медианный фильтр широко используется в цифровой обработке аудио и видео сигналов для шумоподавления. Подается черно-белое изображение размера NxN и размер фильтра KxK (K mod 2 = 1). Для каждого возможного расположения малого квадрата К в большом квадрате N вычисляется медиана: числа в малом квадрате сортируются, а число, стоящее ровно в середине квадрата, является его медианой. Из всех полученных медиан составляется новый квадрат, размером (N-K+1)x(N-K+1).
Например для изображения с N=4 и K=3 и входными данными:
5 6 3 1
7 9 2 5
4 3 1 8
6 7 9 4
возможно четыре расположения малого квадрата в большом. Медианами квадратов будут является числа 4 3 6 5, из которых составляется конечное изображение.
4 3
6 5

С клавиатуры вводятся числа N и K (3<=N<=1000, 3<=K<=N).
Создается квадратная матрица со стороной N (это и есть наше изображение) и заполняется случайными числами из диапазона от 0 до 255 включительно. К матрице применяем медианный фильтр и выводим результат в файл 'out.txt'.
Всё, казалось бы, не сложно, но это только в том случае, если нет ограничений по времени работы программы. Время работы основной части -- медианного фильтра -- не больше 2 секунд. (Время заполнения матрицы рандомом не учитывать). Я написал код, который нормально работает при не очень больших N и К, однако при самом большом объеме вычислений (N = 1000, K = 660) программа работает непозволительно долго. Может быть у кого-нибудь есть идеи оптимизации?


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def rezka (u, z):
    global a, k
    q = []
    for i in range(k):
      q.extend(a[u+i][z:(z+k)])  #преобразование маленького квадрата в строку для сортировки
    return q
 
def qsort (q):
    q.sort() #сортировка малого квадрата и вывод медианы
    return q[len(q)//2]
 
import time, random
n = int(input('Размер матрицы:'))
k = int(input('Глубина фильтрации'))
 
a = []
for i in range (n):
    a.append([])
    for q  in range (n): #заполнение матрицы
        a[i].append(random.randint(0,256))
print ('randomizing OK')
t1 = time.time()
 
for i in range (n-k+1): #фильтрация для всех возможных квадратов
    for q in range (n-k+1):
        qsort(rezka(i, q))
 
#Программа без вывода полученного изображения
print (time.time()-t1) #выводит время работы программы
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2019, 12:14
Ответы с готовыми решениями:

Бинарный поиск , максимизировать медианный балл
вот условия задачи В вымышленной стране прошел очень важный экзамен (ОВЖ). Именно по результатам ОВЖ определяется, насколько хорошо...

Максимальный медианный балл, которого можно добиться, не нарушив никаких ограничений
В вымышленной стране прошел очень важный экзамен (ОВЖ). Именно по результатам ОВЖ определяется, насколько хорошо каждый город организовал...

Медианный фильтр
Нужно реализовать медианный фильтр с помощью OpenGL на Windows, с помощью GLAUX. Не могу сдвинуться с мертвой точки - поиски ни к чему не...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2019, 12:14
Помогаю со студенческими работами здесь

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

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

Медианный фильтр
нужно написать медианный фильтр для одномерного массива уже бьюсь целый день x = y = медиана = средний элемент 2 y = медиана...

Медианный фильтр
Подскажите алгоритм для написания медианного фильтра на языке C++ среда программирования Qt. Яркости точек квадрата 3*3 сортируются по...

OpenCV - Медианный фильтр
Здравствуйте! При реализации медианного фильтра средствами OpenCV возникла проблема: после того как открываю картинку и начинаю передвигать...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru