УМЕНЬШЕНИЕ ШУМА В ПОСЛЕДОВАТЕЛЬНОСТЯХ ИЗОБРАЖЕНИЙ
NOISE REDUCTION FOR IMAGE SEQUENCES

ОБЩИЕ СВЕДЕНИЯ
[0001] Шумы - обычная проблема для всех мультимедийных источников, включая видео. С появлением цифровых камер шумы становятся более явной и большой проблемой, по крайней мере, по двум причинам. Первая причина - снимки делают в условиях, которые не являются оптимальными для съемки. Вторая причина заключается в том, что многие цифровые изображения сжимаются перед передачей, и шумы в сигнале изображения делают сжатие более сложной задачей.
КРАТКОЕ ОПИСАНИЕ
[0002] В общем, практической реализацией представленного здесь объекта изобретения может быть устройство, уменьшающее шум в последовательности изображений. Устройство состоит из блока оценки движения, предназначенного для выработки кадров с компенсированным движением. Устройство включает в себя блок оценки спектра шумов, предназначенный для оценки шума в одном или в нескольких блоках пикселей последовательности входящих кадров. Блок оценки спектра шумов определяет зашумленные и фоновые зоны в последовательности входящих кадров. Блок оценки спектра шумов также определяет расчетный шумовой спектр текущего кадра в последовательности входящих кадров из зашумленных и фоновых зон в последовательности входящих кадров. Устройство также включает в себя определитель записи, предназначенный для обнаружения смены записи в последовательности входящих кадров и для приведения в действие блока оценки спектра шумов в ответ на обнаруженную смену записи. Устройство включает в себя шумоподавитель, предназначенный для уменьшения шума в последовательности изображений посредством использования расчетного шумового спектра и последовательности кадров с компенсированным движением.
[0003] Настоящее краткое описание представлено с пониманием того, что оно не будет использоваться для толкования или ограничения предмета или значения формулы изобретения. Настоящее краткое описание не предназначено для определения главных или основных особенностей заявленного объекта, оно также не предназначено для использования в качестве вспомогательного средства при определении рамок заявленного объекта изобретения.
КРАТКОЕ ПОЯСНЕНИЕ ЧЕРТЕЖЕЙ
[0004] На фиг. 1 показан пример устройства уменьшения шума согласно одному или нескольким исполнениям, описанным в настоящем документе.
[0005] На фиг. 2 показан пример модуля расчетной спектральной плотности мощности (ePSD), изображенного на фиг. 1, согласно одному или нескольким исполнениям, описанным в настоящем документе.
[0006] На фиг. 3 изображена блок-схема способа уменьшения шумов в последовательности изображений согласно одному или нескольким исполнениям, описанным в настоящем документе.
[0007] На фиг. 4 изображена блок-схема способа оценки шумов в последовательности изображений согласно одному или нескольким исполнениям, описанным в настоящем документе.
[0008] На фиг. 5 представлена высокоуровневая блок-схема, иллюстрирующая пример компьютерной системы, пригодной для реализации описанной технологии.
[0009] Подробное описание содержит ссылки на сопровождающие чертежи. На чертежах крайняя левая цифра(-ы) ссылочного номера указывает на чертеж, на котором ссылочный номер появляется впервые. Те же самые номера используются во всех чертежах для ссылок на аналогичные особенности и составляющие.
ПОДРОБНОЕ ОПИСАНИЕ
[0010] В настоящем описании представлена технология, предназначенная для уменьшения шумов в видео, особенно для загружаемого контента. На фиг. 1 ниже показано устройство уменьшения шумов в одном или нескольких исполнениях, включающее в себя определитель записи, блок оценки спектра шумов, блок проверки спектра шумов и шумоподавитель. В устройство уменьшения шумов вводятся три кадра исходной последовательности изображений (т.е. видео). Эти три кадра - текущий кадр, предыдущий кадр и следующий кадр.
[0011] Блок оценки движения определяет движение в кадрах. Одна из целей определения движения в кадрах изображения - использование того, что контент сцены от кадра к кадру может сильно не изменяться, а знание того, где двигаются объекты на месте действия, помогает отличать объекты и шум. Двигающие объекты не являются шумом и должны остаться на изображении. В случаях, когда осуществляется оценка движения, блок оценки движения может использовать не менее трех исходных кадров (т.е. текущий кадр, предыдущий кадр и следующий кадр) для оценки движения камеры, использованной для съемки, определяя основное движение сцены (общая оценка), и/или для оценки движения каждого блока на изображении (блоковая оценка). Блок оценки движения выдает три кадра, движения которых было откорректировано так, чтобы между текущим кадром и предыдущим или следующим не было относительного движения.
[0012] Определитель записи также получает не менее трех кадров исходной последовательности изображений. Определитель записи определяет, где на изображении происходит смена записи. Запись существует со времени начала съемки камерой до времени прекращения съемки. Как правило, в последовательности изображений есть несколько записей, поскольку камера прекращает и начинает снимать несколько раз. В некоторых исполнениях определитель записи определяет смены записи взаимным вычитанием полутоновых гистограмм текущего исходного кадра и предыдущего исходного кадра. Большая разница между двумя гистограммами может означать смену записи в последовательности изображений.
[0013] Блок оценки спектра шумов получает не менее трех кадров исходной последовательности изображений, три кадра с компенсированным изображением из блока оценки движения и выходной результат из определителя записи. Блок оценки спектра шумов может использовать выходной результат из определителя записи для запуска процесса оценки спектра шумов. Блок оценки спектра шумов может использовать исходный текущий кадр, предыдущий и следующий кадры с компенсированным движением для определения того, какие части исходного кадра являются шумами, какие части - текстурой, какие - контурами и т.д. Блок оценки спектра шумов затем использует двухэтапный процесс для определения шума в изображении. На первом этапе блок оценки спектра шумов, используя фильтр размытости Гаусса, находит в исходном изображении блоки только с фоновыми зонами (без текстур или контуров) и шумы. На втором этапе, используя трехмерное быстрое преобразование Фурье (3-D FFT), блоки, прошедшие через первый этап, проходят обработку, чтобы определить для них шумовой спектр. Результатом работы блока оценки спектра шумов является расчетная/вычисленная спектральная плотность мощности шума (ePSD) и соответствующее количество блоков, по которым была вычислена ePSD.
[0014] Блок проверки спектра шумов может получать расчетную спектральную плотность мощности шума и может принимать решение, представляет ли ePSD правдоподобные данные шумов. То есть мощность в каждой временной Фурье-плоскости должна быть приблизительно одинаковой, a ePSD должна быть симметричной. Проверенная спектральная плотность может поступать на шумоподавитель.
[0015] Шумоподавитель может получать исходный текущий кадр, предыдущий кадр с компенсированным движением и следующий кадр с компенсированным движением. Шумоподавитель берет блок из исходного текущего кадра, блок из предыдущего кадра с компенсированным движением, блок из следующего кадра с компенсированным движением и оценивает линейное плоскостное соответствие блоку из исходного текущего кадра. Двухмерная плоскость удаляется из блока исходного текущего кадра, удаляется блок из предыдущего кадра с компенсированным движением и блок из следующего кадра с компенсированным движением, затем на блоке исходного текущего кадра выполняется частотная операция фильтра Винера для уменьшения шумов в блоке. Удаленная двухмерная плоскость затем может быть возвращена в блок из исходного текущего кадра. В результате этого процесса получаем текущий кадр с уменьшенными шумами.
Пример устройства уменьшения шума
[0016] На фиг. 1 показан пример устройства уменьшения шума 100 согласно одному или нескольким исполнениям, описанным в настоящем документе. Показанное устройство 100 включает в себя определитель записи 102, блок оценки движения 104, блок оценки спектра шумов 106, блок проверки спектра шумов 108 и шумоподавитель 110. Показанное устройство уменьшения шума 100 получает исходную последовательность изображений 112 и передает их на определитель записи 102, блок оценки движения 104 и блок оценки спектра шумов 106. Блок оценки движения 104 состоит из устройства блочной оценки движения 116 и общего оценочного устройства 118. Определитель записи 102 включает в себя гистограммный модуль 120. Блок оценки спектра шумов 106 состоит из фильтра Гаусса 124 и модуля ePSD 126. Блок проверки спектра шумов 108 включает в себя модуль определения симметричности 128. Шумоподавитель 110 включает в себя фильтр Винера 130.
[0017] В одном или в нескольких исполнениях устройство уменьшения шума 100 может быть расширением для редактора обработки изображений. В качестве варианта устройство уменьшения шума 100 можно установить в специализированной интегральной микросхеме (ASIC), программируемой пользователем вентильной матрице (FPGA), клиентском компьютере, сервере, камерафоне, смартфоне, планшетном телефоне и/или в подобных устройствах.
[0018] Устройство уменьшения шума 100 получает три кадра из исходной последовательности изображений 112. Этими тремя кадрами являются исходный текущий кадр, исходный предыдущий кадр и исходный следующий кадр. В основном, при обработке видео или другой последовательности изображений, которая была отредактирована, есть несколько записей. Разные записи могут иметь разные характеристики шумов. Определитель записи 102 получает три кадра и определяет, где происходит смена записи, чтобы принять это в расчет во время процесса уменьшения шума.
[0019] В одном или в нескольких исполнениях определитель записи 102 использует гистограммный модуль 120, чтобы определить, где в исходной последовательности изображений 112 происходят смены записи. Например, гистограммный модуль 120 определяет разницу между полутоновой гистограммой исходного текущего кадра и полутоновой гистограммой исходного предыдущего кадра. Большая разница между двумя гистограммами может означать смену записи в исходной последовательности изображений 112. Небольшая разница между двумя гистограммами может означать отсутствие смены записи в исходной последовательности изображений 112.
[0020] В одном или в нескольких исполнениях определитель записи 102 определяет разницу между значениями яркости исходного текущего кадра и исходного предыдущего кадра. Большая разница между двумя значениями яркости может означать смену записи в исходной последовательности изображений 112. Небольшая разница между двумя значениями яркости может означать отсутствие смены записи в исходной последовательности изображений 112.
[0021] В одном или в нескольких исполнениях определитель записи 102 может вычислять общее движение в исходном текущем кадре и исходном предыдущем кадре и может вычислять разницу межкадрового смещения (DFD) исходного текущего кадра и исходного предыдущего кадра. Большая DFD может указывать на смену записи в последовательности изображений 112. Небольшая DFD может указывать на отсутствие смены записи в последовательности изображений 112.
[0022] Блок оценки движения 104 также получает три кадра из исходной последовательности изображений 112. В одном или в нескольких исполнениях блок оценки движения 104 определяет отсутствие движения в исходной последовательности изображений 112, оценивает общее движение в исходной последовательности изображений 112, определяет вектор движения для каждого блока в исходной последовательности изображений 112, где размер блока изменяется в зависимости от размера изображения и/или определяет вектор движения для каждого пикселя в исходной последовательности изображений 112.
[0023] Например, если размер изображения исходной последовательности изображений 112 менее 480p, блок оценки движения 104 может не выполнять оценку движения в исходной последовательности изображений 112.
[0024] В исполнениях, где блок оценки движения 104 может использовать устройство блочной оценки 116 для блочной оценки движения в исходной последовательности изображений 112, устройство блочной оценки движения 116 использует блоки пикселей, чтобы получить векторы, соответствующие движению блоков в текущем кадре исходной последовательности изображений 112. Если разрешение изображения исходной последовательности изображений 112 больше 480p, устройство блочной оценки движения 116 может осуществлять процесс оценки движения на блоках размером 32×32 пикселей. Если разрешение изображения исходной последовательности изображений 112 меньше 480p, но больше 360p, устройство блочной оценки движения 116 может осуществлять процесс оценки движения на блоках размером 16×16 пикселей. Если разрешение изображения исходной последовательности изображений 112 меньше 360p, устройство блочной оценки движения 116 может осуществлять процесс оценки движения на блоках размером 8×8 пикселей.
[0025] Например, в одном или в нескольких исполнениях устройство блочной оценки 116 может использовать способ переборного поиска, чтобы минимизировать смещение (или вектор скорости) между блоками исходного текущего кадра и блоками исходного предыдущего кадра. Устройство блочной оценки 116 можно выполнить, используя технологию сверхвысокой интеграции (VLSI). Устройство блочной оценки 116 можно выполнить, используя способ блочной оценки движения.
[0026] В одном или в нескольких исполнениях блок оценки движения 104 может использовать блок общей оценки 116 для оценки движения камеры, использованной для съемки, из которой взяли исходную последовательность изображений 112, определяя основное движение сцены. Блок общей оценки 116 может затем выдать один вектор движения, характеризующий общее движение сцены, исходя из этой оценки.
[0027] В одном или в нескольких исполнениях блок оценки движения 104 может использовать способ поэлементного рекурсивного оценивания для получения пакета векторов, соответствующих движению каждого пикселя в сцене. Блок оценки движения 104 в результате выдает три кадра с компенсированным движением, так что относительное движение между ними уменьшено или даже устранено, т.е. кадры с компенсированным движением 119. То есть между текущим кадром с компенсированным движением, предыдущим кадром с компенсированным движением и следующим кадром с компенсированным движением мало движения или оно отсутствует.
[0028] Блок оценки спектра шумов 106 может получать текущий кадр с компенсированным движением, предыдущий кадр с компенсированным движением и следующий кадр с компенсированным движением из блока оценки движения 104. Блок оценки спектра шумов 106 также может получать исходный текущий кадр, исходный предыдущий кадр и исходный следующий кадр из последовательности изображений 112. Блок оценки спектра шумов 106 может использовать обработанные данные из определителя записи в качестве пускового сигнала 122 начала процесса оценки спектра шумов.
[0029] В одном или в нескольких исполнениях блок оценки спектра шумов 106 может использовать исходный текущий кадр, предыдущий и следующий кадры с компенсированным движением, чтобы определить, какие части исходного кадра являются шумом, какие - текстурой, какие - контурами и т.д. Блок оценки спектра шумов 106 может использовать двухэтапный процесс для определения шума в последовательности изображений 112.
[0030] На первом этапе блок оценки спектра шумов 106 находит блоки в последовательности изображений 112, в которых есть только фоновые зоны (без текстур или контуров) и шум. Можно установить следующие размеры блока. Если разрешение последовательности изображений 112 выше 480p, размер блока можно установить 32×32 пикселей. Если разрешение последовательности изображений 112 ниже 480p, но выше 360p, размер блока можно установить 16×16 пикселей. Если разрешение последовательности изображений 112 ниже 360p, размер блока можно установить 8×8 пикселей.
[0031] Блок оценки спектра шумов 106 проверяет сетку блоков в последовательности изображений 112. В одном или в нескольких исполнениях блоки в сетке могут двукратно совпадать в обоих направлениях. В других исполнениях блоки в сетке могут иметь другие коэффициенты совпадения в обоих направлениях: один, три, четыре, пять и т.д.
[0032] Блок оценки спектра шумов 106 выполняет проверку насыщенности последовательности изображений 112. В одном или в нескольких исполнениях блок оценки спектра шумов 106 определяет блоки в сетке, яркость которых находится между насыщенностью и недостаточной выдержкой, чтобы такие блоки можно было исключить из процесса оценки шумов. Например, последовательность изображений 112 является 8-битным изображением, среднее значение яркости в блоке может быть в рамках 0,05×255 и 0,95×255. В одном или в нескольких исполнениях среднее значение яркости в блоке может быть в рамках 0,1×255 и 0,90×255. Как вариант, в одном или в нескольких исполнениях среднее значение яркости в блоке может быть в рамках 0,15×255 и 0,85×255.
[0033] Блок оценки спектра шумов 106 выполняет проверку компенсации движения блоков, которые прошли проверку насыщенности. В одном или в нескольких исполнениях блок оценки спектра шумов 106 извлекает блок из исходного текущего кадра, блок из предыдущего кадра с компенсированным движением, соответствующий блоку, извлеченному из исходного текущего кадра, и блок из следующего кадра с компенсированным движением, соответствующий блоку, извлеченному из исходного текущего кадра. Блок оценки спектра шумов 106 определяет смещенную вперед разницу кадров (fDFD) и смещенную назад разницу кадров (bDFD), чтобы в результате получить среднее абсолютное отклонение (MAE) между блоком, извлеченным из исходного текущего кадра.
[0034] Затем блок оценки шумов 106 выбирает блоки из исходного текущего кадра, fDFD и bDFD которого меньше верхней пороговой величины. Это делается для обеспечения того, чтобы движение в этих выбранных блоках были хорошо компенсированным.
[0035] Единицами fDFD и bDFD могут быть уровни полутона. В одном или в нескольких исполнениях, в которых изображение является 8-битным, уровни полутона могут находиться в диапазоне от 0 до 255. В этих исполнениях предельные значения находятся между 0 и 255. В некоторых исполнениях верхняя пороговая величина может быть 10.
[0036] Блок оценки спектра шумов 106 также выполняет проверку минимального шума блоков, которые прошли проверку насыщенности. В одном или в нескольких исполнениях блок оценки спектра шумов 106 выбирает блоки из исходного текущего кадра, значения fDFD и bDFD которого больше нижней пороговой величины. Это необходимо для того, чтобы эти отобранные блоки имели, по крайней мере, некоторое количество шума. В одном или в нескольких исполнениях нижняя пороговая величина может быть 0,1.
[0037] Блок оценки спектра шумов 106 выполняет проверку только шума блоков, которые прошли проверку насыщенности, проверку компенсации движения и проверку минимального шума. Во время проверки только шума блок оценки спектра шумов 106 оценивает текстурный контент блоков, которые прошли проверку насыщенности, проверку компенсации движения и проверку минимального шума. В одном или в нескольких исполнениях блок оценки спектра шумов 106 вычисляет минимальный и максимальный градиент блоков, а также направление минимального и максимального градиента.
T
T
T
T
T
C
DET
G
C
DET
G
[0038] Вычисления можно выполнить, используя анализ собственных значений любой известной градиентной корреляционной матрицы 2×2 (GG). Например, можно считать, что блоки имеют только один шум, если следующее является верным: (1) условие матрицы GG меньше заранее определенного значения (T), (2) показатель матрицы GG меньше заранее определенного значения (T), и (3) квадратный корень точки пересечения матрицы GG меньше заранее определенного значения (T). В одном или в нескольких исполнениях T=50, T=0,04, и (3) квадратный корень точки пересечения GG матрицы (T) меньше 0,09.
[0039] Для выполнения оценки текстур блок оценки спектра шумов 106 использует версию низкочастотного фильтра последовательности изображения 112. В одном или в нескольких исполнениях фильтр Гаусса 124, который может, например, иметь отклонение 0,5, можно использовать для низкочастотного фильтрования последовательности изображений 112. Можно считать, что блоки, которые прошли проверку насыщенности, проверку компенсации движения и проверку минимального шума, содержат только шум, и их можно передавать на второй этап обработки блока оценки спектра шумов 106.
[0040] На втором этапе блок оценки спектра шумов 106 определяет шумовой спектр блоков, которые считаются содержащими только шум, как определено на первом этапе обработки. В одном или в нескольких исполнениях блок оценки спектра шумов 106 проверяет, что блоков, которые содержат только шум, минимальное количество. Затем блоки проходят обработку для оценки шумового спектра. Например, если есть по крайней мере пять блоков, по которым определили, что они содержат только шум, блок оценки спектра шумов 106 оценивает шумовой спектр, используя эти блоки.
[0041] В одном или в нескольких исполнениях модуль ePSD 126 осуществляет части второго этапа блока оценки спектра шумов 106. На фиг. 2 показан модуль ePSD 126 более подробно. Показанный модуль ePSD 126 включает в себя модуль плоскостной насыщенности 202, гистограммный модуль 204, модуль обработки способом окна 206, модуль преобразования 208 и усредняющий модуль 210.
[0042] Блок оценки шумового спектра 106 выбирает интересующий блок из блоков, содержащих только шум, и модуль плоскостной насыщенности 202 подгоняет плоскость насыщенности под рассматриваемый блок. То есть модуль плоскостной насыщенности 202 оценивает соответствие линейной плоскости рассматриваемому блоку. Плоскость насыщенности имеет формулу
I′=a+bh+ck+dhk,
где a, b, c и d - коэффициенты плоскости насыщенности, h и k - координаты ряда и колонки пикселя.
c
[0043] Модуль плоскостной насыщенности 202 оценивает соответствие линейной плоскости рассматриваемому блоку и убирает двухмерную плоскость из рассматриваемого блока. Модуль плоскостной насыщенности 202 определяет разницу между насыщенностью рассматриваемого блока и насыщенностью пикселя в зашумленном исходном текущем кадре, чтобы в результате найти отклонение e
c
c
e=I-I′,
c
c
c
где I - насыщенность пикселя. Этот процесс определения разницы между насыщенностью рассматриваемого блока и насыщенностью пикселя в соответствующем зашумленном исходном текущем кадре используется, чтобы получить отклонение e. Отклонение сигнала ошибки e приблизительно соответствует отклонению шума в последовательности зашумленных изображений 112.
c
[0044] В одном или в нескольких исполнениях блок оценки спектра шумов 106 определяет общее значение для блоков, по которому определяется значение отклонения сигнала ошибки подгруппы блоков e. Гистограммный модуль 204 создает гистограмму шумовых отклонений. Блок оценки спектра шумов 106 выбирает блоки в моде гистограммы, чтобы представить зашумленные блоки, подходящие для вычисления спектра шумов. Например, если в режиме меньше пяти блоков, блок оценки спектра шумов 106 может включить столбики гистограммы в любую из сторон моды. Если все равно меньше пяти блоков, зашумленный исходный текущий кадр не может быть обработан для оценки шумов, и для обработки выбирается другой зашумленный исходный текущий кадр.
P
N
[0045] Для окончательной группы выбранных блоков модуль плоскостной насыщенности 202 определяет разницу между оцененной плоскостью предыдущего и следующего блоков, чтобы в результате получить два или более блоков ошибок e и e, соответствующих блокам из предыдущих и следующих кадров.
[0046] Модуль обработки способом окна 206 обрабатывает блоки ошибок способом окна e. В одном или в нескольких исполнениях модуль обработки способом окна 206 может включать в себя двухмерное окно Хэмминга. В других исполнениях модуль обработки способом окна 206 использует другие подходящие окна, например треугольные и прямоугольные окна.
c
P
N
c
P
N
[0047] Модуль преобразования 208 вычисляет возможное значение спектра мощности для сигналов в блоках ошибок e, e и e. Эта мощность называется «спектральная плотность мощности» (PSD). Для целей настоящего документа «мощность» означает квадрат амплитуды составляющих спектра в преобразовании сигналов в блоках ошибок e, e и e.
c
P
N
c
P
N
[0048] Исходя из того, что подгонка плоскости насыщенности смоделировала основополагающие данные последовательности изображений 112, сигналы ошибки представляют шум в последовательности изображений 112, спектральная мощность шума была вычислена, и каждый блок ошибки e, e и e в результате дает пример такого спектра мощности. В одном или в нескольких исполнениях модуль преобразования 208 вычисляет возможное значение спектра мощности для сигналов в блоках ошибок e, e и e, используя трехмерное быстрое преобразование Фурье, дискретное косинусное преобразование или другое соответствующее преобразование.
c
P
N
[0049] В одном или в нескольких исполнениях усредняющий модуль 210 вычисляет среднее значение каждого блока ошибок e, e и e, чтобы в результате дать окончательную оценку шумового спектра. Выходным результатом 132 работы блока оценки спектра шумов 106 является шумовой спектр. Другим выходным результатом 142 является соответствующее количество блоков, по которым был вычислен расчетный шумовой спектр. Соответственно, если блок оценки спектра шумов 106 не вычислил шумовые спектры, блок оценки спектра шумов 106 ждет другой кадр для обработки, чтобы оценить шумовой спектр.
[0050] В одном или в нескольких исполнениях блок оценки спектра шумов 106 выполняет предварительную оценку расчетного шумового спектра. Чтобы это сделать, пользователь должен сделать снимок малоконтрастного изображения, например стены без текстуры или серой карточки. Пользователь передает данные малоконтрастного изображения в модуль ePSD 126, который в результате выдает предварительно вычисленный расчетный шумовой спектр.
[0051] Оценка шумового спектра, выполненная блоком оценки спектра шумов 106, может быть неправильной, если в последовательности изображений 112 есть много текстур, и эти текстуры похожи на шум. Оценка шумового спектра, выполненная блоком оценки спектра шумов 106 также может быть неправильной, если есть движение, которое сложно отследить. Возвращаясь к фиг. 1, блок проверки спектра шумов 108 получает расчетную спектральную плотность шумовой мощности и определяет, представляет ли спектр мощности правдоподобные характеристики шума.
c
P
N
[0052] В исполнениях, в которых трехмерное быстрое преобразование Фурье вычисляет возможное значение шумового спектра сигналов в блоках ошибок e, e и e, чтобы быть действительными, шумовой спектр должен быть приблизительно равным для каждой из трех временных плоскостей Фурье. Если коэффициент средней мощности в каждой из трех временных плоскостях Фурье больше предельного значения, тогда временную плоскость Фурье с минимальной мощностью можно скопировать в плоскости с наибольшей мощностью, чтобы обеспечить минимальное расхождение мощностей. В одном или в нескольких исполнениях предельное значение - 3,0, что обеспечивает значение расхождения мощности в плоскостях менее трех. Предельное значение 3,0 также обеспечивает определенный допуск до уровня ×3, чтобы учитывать необычные спектры мощности.
c
P
N
[0053] Кроме того, чтобы быть действительным, расчетный спектр мощности должен быть симметричным. В одном или в нескольких исполнениях модуль определения симметричности 128 определяет симметричность в расчетных спектрах шумовой мощности для блоков. Например, в исполнениях, в которых трехмерное быстрое преобразование Фурье вычисляет возможное значение шумового спектра сигналов в блоках ошибок e, e и e, модуль определения симметричности 128 использует соотношение между мощностью по горизонтальной и вертикальной осям каждой временной плоскости Фурье. Если расчетный шумовой спектр является асимметричным, модуль определения симметричности 128 определяет, что значение шумового спектра является недействительным. Вместо недействительного шумового спектра модуль определения симметричности 128 представляет спектр мощности белого шума. То есть модуль определения симметричности 128 представляет шумовой спектр с одинаковой мощностью в каждом столбике быстрого преобразования Фурье.
[0054] Блок проверки спектра шумов 108 также масштабирует расчетный шумовой спектр, чтобы учесть потенциальное отсутствие видимого эффекта в процессе уменьшения шумов, используя расчетный шумовой спектр. Блок проверки спектра шумов 108 масштабирует каналы яркости на множитель 3,5, а каналы цвета - на множитель 7,0. Однако в одном или в нескольких исполнениях блок проверки спектра шумов 108 может масштабировать шумовой спектр на любой множитель больше единицы.
c
P
N
[0055] Блок проверки спектра шумов 108 также усиливает контуры в последовательности изображений 112. Это достигается путем усиления высокочастотного контента относительно низкочастотного контента в последовательности изображений 112. В одном или в нескольких исполнениях, в которых трехмерное быстрое преобразование Фурье вычисляет возможное значение шумового спектра сигналов в блоках ошибок e, e и e, контуры последовательности изображений 112 усиливаются путем умножения высокочастотных коэффициентов на функцию, большую единицы.
[0056] Выходным результат 152 работы блока проверки спектра шумов 108 является проверенный расчетный шумовой спектр или указание на то, что расчетный шумовой спектр является неправильным.
[0057] Шумоподавитель 110 уменьшает шумы на последовательности изображений 112, используя расчетный шумовой спектр. В одном или в нескольких исполнениях шумоподавитель 110 получает исходный текущий кадр из последовательности изображений 112, предыдущий кадр с компенсированным движением из блока оценки движения 104 и следующий кадр с компенсированным движением из блока оценки движения 104. Шумоподавитель 110 берет блок из исходного текущего кадра, блок из предыдущего кадра с компенсированным движением, блок из следующего кадра с компенсированным движением и оценивает линейное плоскостное соответствие блоку из исходного текущего кадра. Двухмерная плоскость убирается из блока исходного текущего кадра, и фильтр Винера 130 выполняет частотную операцию фильтра Винера на блоке исходного текущего кадра, чтобы уменьшить шумы в блоке, используя расчетный шумовой спектр, вычисленный блоком оценки спектра шумов 106. Удаленную двухмерную плоскость затем возвращают в блок из исходного текущего кадра. Выходным результатом 162 работы шумоподавителя 110 является вариант исходного текущего кадра с уменьшенными шумами из последовательности изображений 112.
[0058] Выполняя уменьшение шума для каждого обрабатываемого блока, шумоподавитель 110 определяет следующее. Если смещенная вперед разница кадров (fDFD) и смещенная назад разница кадров (bDFD) между исходным текущим кадром, предыдущим кадром с компенсированным движением и следующим кадром с компенсированным движением выше предельного значения, тогда шумоподавитель 110 определяет, что компенсация движения не увенчалась успехом. Шумоподавитель 110 повторяет текущий блок в направлении несовпадающего блока. В одном или в нескольких исполнениях 10 может быть предельным значением для каналов яркости и 5 - для каналов цветности.
[0059] Если fDFD и bDFD между исходным текущим кадром, предыдущим кадром с компенсированным движением и следующим кадром с компенсированным движением слишком низкая, тогда шумоподавитель 110 не уменьшает шум в исходном текущем кадре. В одном или в нескольких исполнениях, если fDFD и bDFD между исходным текущим кадром, предыдущим кадром с компенсированным движением и следующим кадром с компенсированным движением менее 0,1 уровней полутонов, тогда шумоподавитель 110 не уменьшает шум в исходном текущем кадре.
[0060] Если пространственное изменение сигнала в текущем блоке слишком низкое, тогда шумоподавитель 110 не выполняет уменьшение шума в исходном текущем кадре. В одном или в нескольких исполнениях, если пространственное изменение сигнала в текущем блоке равно нулю, тогда шумоподавитель 110 не выполняет уменьшение шума в исходном текущем кадре.
[0061] Если мощность расчетного шумового спектра слишком низкая, шумоподавитель 110 определяет, что в исходном текущем кадре шум отсутствует. Сам по себе шумоподавитель 110 не уменьшает шумы в исходном текущем кадре. В одном или в нескольких исполнениях шумоподавитель 110 не выполняет операцию по уменьшению шума в исходном текущем кадре, если мощность шумового спектра меньше 40 дБ. В одном или в нескольких исполнениях шумоподавитель 110 не выполняет операцию по уменьшению шума в исходном текущем кадре, если мощность шумового спектра меньше 30 дБ.
Пример способа уменьшения шума
[0062] На фиг. 3 представлена структурная схема способа 300, выполняемого устройством уменьшения шумов, таким как устройство уменьшения шумов 100, показанное на фиг. 1, в соответствии с описанной здесь технологией. Например, устройство уменьшения шума получает последовательность изображений 112. Определитель записи 102 находит смену записи в последовательности изображений 112. Блок оценки движения 104 оценивает движение блоков в последовательности изображений 112. Блок оценки спектра шумов 106 оценивает шум в последовательности изображений 112, чтобы в результате выдать расчетный шумовой спектр. Блок проверки спектра шумов 108 проверяет правильность расчетного шумового спектра. Шумоподавитель уменьшает шум в последовательности изображений 112, используя проверенный расчетный шумовой спектр.
[0063] В блоке 302 устройство уменьшения шума 100 получает исходные кадры из последовательности изображений 112. В одном или в нескольких исполнениях определитель записи 102, блок оценки шумов 104 и блок оценки спектра шумов 106 получают исходные кадры из последовательности изображений 112. Исходные кадры состоят из исходного текущего кадра, исходного предыдущего кадра и исходного следующего кадра.
[0064] Устройство уменьшения шумов 100 использует любой подходящий механизм для получения исходных кадров из последовательности изображений 112. Например, в одном или в нескольких исполнениях устройство уменьшения шумов 100 получает последовательность изображений 112 из камеры в формате сжатого видеофайла Экспертной группы по киноизображению-2 (MPEG-2), в формате видеофайла h264 или в подобных форматах.
[0065] В блоке 304 устройство уменьшения шумов 100 находит смену записи в последовательности изображений 112. В одном или в нескольких исполнениях определитель записи 102 определяет смену записи в последовательности изображений 112 путем нахождения разницы между полутоновой гистограммой исходного текущего кадра и полутоновой гистограммой исходного предыдущего кадра. Большая разница между двумя гистограммами указывает на смену записи, а небольшая разница между двумя гистограммами указывает на отсутствие смены записи.
[0066] В блоке 306 устройство уменьшения шумов 100 оценивает движение в последовательности изображений 112. В одном или в нескольких исполнениях блок оценки движения 104 использует способ оценки общего движения и/или способ блоковой оценки движения, чтобы оценить движение исходного предыдущего кадра и исходного следующего кадра относительно исходного текущего кадра.
[0067] В блоке 308 устройство уменьшения шумов 100 оценивает шумовой спектр последовательности изображений 112. В одном или в нескольких исполнениях блок оценки спектра шумов 106 оценивает шумовой спектр в последовательности изображений путем нахождения блоков в последовательности изображений 112, содержащих только фоновые зоны, и вычисляя возможное значение шумового спектра для фоновых блоков.
[0068] В блоке 310 устройство уменьшения шумов 100 проверяет правильность расчетных шумовых спектров для каждого блока. В одном или в нескольких исполнениях блок проверки спектра шумов 108 проверяет симметричность оцененных шумовых спектров. В одном или в нескольких исполнениях блок проверки спектра шумов 108 также масштабирует оцененные шумовые спектры на коэффициент больше единицы.
[0069] В блоке 312 устройство уменьшения шумов 100 уменьшает шумы в последовательности изображений 112. В одном или в нескольких исполнениях шумоподавитель 110 оценивает линейное плоскостное соответствие блоку из исходного текущего кадра, убирает двухмерную плоскость из блока и применяет к блоку фильтр Винера 130 для уменьшения шумов в исходном текущем кадре. Затем шумоподавитель 110 заменяет двухмерную плоскость в блоке из исходного текущего кадра.
Пример способа оценки шума
[0070] На фиг. 4 представлена структурная схема способа 400, выполняемого блоком оценки спектра шумов, таким как блок оценки спектра шумов 106, показанный на фиг. 1, в соответствии с описанной здесь технологией. В одном или в нескольких исполнениях блок оценки спектра шумов 106 получает исходные кадры из последовательности изображений 112, кадры с компенсированным движением 119 из блока оценки движения 104 и пусковой сигнал 122 из определителя записи 102. Исходные кадры в последовательности изображений 112 состоят из исходного текущего кадра, исходного предыдущего кадра и исходного следующего кадра.
[0071] В блоке 402 блок оценки спектра шумов 106 выбирает сетку блоков из последовательности изображений 112. В одном или в нескольких исполнениях, если разрешение последовательности изображений 112 больше 480p, блок оценки шумов 106 устанавливает размер блока 32×32 пикселей. Если разрешение последовательности изображений 112 ниже 480p, но выше 360p, блок оценки шумов 106 устанавливает размер блока 16×16 пикселей. Если разрешение последовательности изображений 112 ниже 360p, блок оценки шумов 106 устанавливает размер блока 8×8 пикселей. В одном или в нескольких исполнениях блок оценки спектра шумов 106 выбирает сетку блоков так, чтобы было двукратное совпадение в горизонтальном и вертикальном направлениях.
[0072] В блоке 404 блок оценки спектра шумов 106 выбирает блоки, яркость которых больше, чем недостаточно выдержанных, и меньше, чем насыщенных, чтобы такие блоки можно было исключить из процесса оценки шумов. Например, последовательность изображений 112 является 8-битным изображением, среднее значение яркости в блоке находится в рамках 0,05×255 и 0,95×255. В одном или в нескольких исполнениях среднее значение яркости в блоке находится в рамках 0,7×255 и 0,81×255. Как вариант, в одном или в нескольких исполнениях среднее значение яркости в блоке находится в рамках 0,13×255 и 0,76×255.
[0073] В блоке 406 блок оценки спектра шумов 106 выбирает блоки, fDFD и bDFD которых находится между минимальным и максимальным предельными значениями. В одном или в нескольких исполнениях максимальное предельное значение - 10, а минимальное предельное значение - 0,1.
[0074] В блоке 408 блок оценки спектра шумов 106 оценивает текстурное содержание выбранных блоков. В одном или в нескольких исполнениях фильтр Гаусса 124 фильтрует блоки, выбранные для оценки текстур. Блок оценки спектра шумов 106 вычисляет минимальный и максимальный градиент отфильтрованных блоков, а также направление минимального и максимального градиента выбранных блоков для оценки их текстурного содержания.
[0075] В блоке 410 блок оценки спектра шумов 106 выбирает рассматриваемый блок и подгоняет плоскость насыщенности к рассматриваемому блоку. В одном или в нескольких исполнениях модуль плоскостной насыщенности 202 оценивает соответствие линейной плоскости рассматриваемому блоку.
c
P
N
[0076] В блоке 412 блок оценки спектра шумов 106 находит значения ошибок для исходного текущего блока, исходного предыдущего блока и исходного следующего блока. В одном или в нескольких исполнениях модуль плоскостной насыщенности 202 определяет разницу между плоскостью насыщенности, которая была подогнана к рассматриваемому блоку, и насыщенностью пикселя в зашумленном исходном текущем кадре, чтобы в результате получить ошибку e. Модуль плоскостной насыщенности 202 также определяет разницу между расчетной плоскостью предыдущего и следующего блоков, чтобы в результате дать еще два блока ошибок e и e, соответствующих блокам из предыдущего и следующего кадров.
c
P
N
[0077] В блоке 414 блок оценки спектра шумов 106 обрабатывает способом окна текущий, предыдущий и следующий блоки. В одном или в нескольких исполнениях модуль обработки способом окна 206 обрабатывает блоки ошибок e, e и e, используя двухмерное окно Хэмминга.
c
P
N
[0078] В блоке 416 блок оценки спектра шумов 106 вычисляет трехмерное быстрое преобразование Фурье рассматриваемого блока, предыдущего блока и следующего блока. В одном или в нескольких исполнениях модуль преобразования 208 вычисляет возможное значение шумового спектра для сигналов в блоках ошибок e, e и e, чтобы выдать расчетный шумовой спектр для текущего, предыдущего и следующего блоков соответственно.
c
P
N
c
P
N
[0079] В блоке 418 блок оценки спектра шумов 106 вычисляет среднее значение расчетных шумовых спектров для сигналов в блоках ошибок e, e и e. В одном или в нескольких исполнениях усредняющий модуль 210 вычисляет среднее значение каждого блока ошибок e, e и e, чтобы в результате дать окончательную оценку шумового спектра.
[0080] Способы 300 и 400 показаны как подборка блоков в логической блок-схеме, представляющей последовательность операций, которые можно реализовать только с помощью технических средств или используя сочетание оборудования, программного обеспечения и/или микропрограмм. Применительно к программному обеспечению/микропрограммам блоки представляют собой команды, хранимые на машиночитаемых накопителях данных, которые при исполнении одним или несколькими процессорами выполняют описанные операции. Примите во внимание, что последовательность, в которой описаны процессы, не следует рассматривать единственно возможной, и любое количество описанных блоков технологического процесса можно сочетать для выполнения процессов или для построения альтернативного процесса. Кроме того, из процессов можно убирать отдельные блоки, не отклоняясь от смысла и объекта изобретения, описанных здесь.
Пример вычислительной среды
[0081] На фиг. 5 представлена высокоуровневая блок-схема, иллюстрирующая пример компьютерной системы 500, пригодной для реализации устройства уменьшения шума 100, представленного на фиг. 1. В определенных аспектах компьютерную систему 500 можно реализовать, используя аппаратное оборудование или сочетание программного обеспечения и аппаратного оборудования.
[0082] Представленная компьютерная система 500 состоит из процессора 502, памяти 504, ЗУ для данных 506, соединенного с шиной 508 или иным коммуникационным устройством для передачи данных. Модуль ввода/вывода 510 также соединен с шиной 508. Коммуникационный модуль 512, устройство 514 и устройство 516 соединены с модулем ввода/вывода 510.
[0083] Процессор 502 может быть микропроцессором общего назначения, микроконтроллером, цифровым сигнальным процессором (DSP), специализированной интегральной микросхемой (ASIC), программируемой пользователем вентильной матрицей (FPGA), программируемой логической интегральной схемой (PLD), контроллером, конечной машиной, вентильной логической схемой, дискретными аппаратными элементами или любым другим подходящим элементом, который может выполнять вычисления или другие манипуляции с данными. Процессор 502 используется для обработки данных. Процессор 502 можно дополнить специальными логическими схемами или включить его в такие схемы.
[0084] Память 504 может быть оперативным запоминающим устройством (RAM), флэш-памятью, постоянным запоминающим устройством (ROM), программируемым постоянным запоминающим устройством (PROM), стираемым программируемым постоянным запоминающим устройством (EPROM), самопишущими аппаратами, жестким диском, съемным диском, CD-ROM, DVD или любым другим подходящим устройством хранения данных, используемым для хранения информации, компьютерной программы и/или команд, которые должен выполнять процессор 502. Память 504 хранит код, который создает условия выполнения для одной или нескольких компьютерных программ, используемых для осуществления описанной здесь технологии.
[0085] Рассматриваемая здесь компьютерная программа не обязательно соответствует файлу в файловой системе. Компьютерная программа может храниться в части файла, содержащего другие программы или данные (например, один или несколько скриптов хранятся в документе языка разметки), в единичном файле, предназначенном для рассматриваемой программы, или в нескольких согласованных файлах (например, файлы, которые хранят один или несколько модулей, подпрограммы или части кода). Компьютерную программу можно ввести в действие для выполнения на одном компьютере или на нескольких компьютерах, расположенных в одном месте или в разных местах и связанных между собой сетью передачи данных.
[0086] Если контекст не указывает на иное, под «модулем» имеется ввиду элемент, являющийся аппаратным оборудованием, встроенным программным обеспечением и/или их сочетанием с ПО (например, компьютерная программа). Как указано, компьютерная программа не обязательно соответствует файлу в файловой системе. Компьютерная программа может храниться в части файла, содержащего другие программы или данные (например, один или несколько скриптов хранятся в документе языка разметки), в единичном файле, предназначенном для рассматриваемой программы, или в нескольких согласованных файлах (например, файлы, которые хранят один или несколько модулей, подпрограммы или части кода). Компьютерную программу можно ввести в действие для выполнения на одном компьютере или на нескольких компьютерах, расположенных в одном месте или в разных местах и связанных между собой сетью передачи данных.
[0087] Команды реализуются в одной или в нескольких компьютерных программных продуктах, т.е. один или несколько модулей компьютерных программных команд закодирован на одном или нескольких машиночитаемых носителях для выполнения компьютерной системой 500 или для управления ее работой в соответствии с способом, хорошо известным для владеющих данным вопросом. Термин «машиночитаемые носители» охватывает компьютерные запоминающие устройства. Например, компьютерные запоминающие устройства включают в себя, в том числе, магнитные запоминающие устройства (например, жесткий диск, гибкий диск, магнитные карты), оптические диски (например, лазерный диск (CD) и универсальный цифровой диск (DVD)), смарт-карты, устройства флэш-памяти (например, флэшка, карта памяти, карты SD), а также энергозависимую и энергонезависимую память (например, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM)).
[0088] Запоминающим устройством для данных 506 может быть, например, магнитный диск или оптический диск. ЗУ для данных 506 работает для хранения данных и команд, используемых процессором 502 и другими элементами компьютерной системы 500.
[0089] Шиной 508 может быть любое соответствующее устройство, позволяющее выполнять обмен данными между элементами, соединенными с шиной 508. Например, шиной 508 могут быть средства передачи данных, такие как коаксиальные кабели, медный провод, волоконно-оптические кабели, оптические сигналы и тому подобное.
[0090] Модулем ввода/вывода 510 может быть любой модуль ввода/вывода. Пример модуля ввода/вывода 510 включает в себя порты передачи данных, такие как порты универсальной последовательной шины (USB).
[0091] Коммуникационный модуль 512 может включать в себя сетевые интерфейсные карты, такие как карты локальной сети и модемы.
[0092] Устройством 514 может быть устройство ввода. Образец устройств 514 включает в себя клавиатуру, указывающее устройство, мышь или трекбол, используя которые пользователь может вводить данные в компьютерную систему 500.
[0093] Устройством 516 может быть устройство вывода. Образец устройств 516 включает в себя дисплеи, такие как электронно-лучевые трубки (ЭЛТ) или мониторы с жидкокристаллическим дисплеем (ЖК), отображающие пользователю данные, такие как, например, веб-страницы.
[0094] Одно или несколько исполнений описаны здесь со ссылкой на примеры определенного применения. Следует понимать, что представленные исполнения не являются исчерпывающими. Специалисты, владеющие знаниями в области представленной здесь идеи, найдут дополнительные модификации, области применения и способы реализации в рамках идеи, а также дополнительные сферы, в которых технология найдет практическое применение. В представленном выше описании примеров исполнения, для объяснения конкретные цифры, материалы, конфигурации и прочие подробности изложены для лучшего пояснения заявленной практической реализации. Тем не менее, специалисту, обладающему соответствующими знаниями, будет ясно, что формулу изобретения можно практически реализовать, используя детали, отличающиеся от описанных здесь примеров. В других случаях хорошо известные особенности опущены или упрощены для ясности описания примеров исполнения.
[0095] В настоящем документе термин «или» означает включающее «или», а не исключающее «или». То есть, если иное не указано или не понятно из контекста, «X использует A или B» означает любые нормальные инклюзивные сочетания. То есть, если X использует A; X использует B; или X использует и A и B, тогда «X использует A или B» является выполненным в любом из вышеуказанных случаев. Помимо всего прочего, неопределенные артикли, используемые в данной заявке и прилагаемой формуле изобретения, должны, как правило, интерпретироваться, как означающие «один или несколько», если не указано иначе или из контекста ясно, что артикль указывает на единственное число.
[0096] В прилагаемой формуле изобретения автор изобретения ссылается на 35 U.S.С. § 112, пункт 6 Свода законов США только когда слова «средства для» или «шаги для» использованы в формуле изобретения. Если такие слова не используются в формуле, тогда автор изобретения не предполагает, что рассматриваемая заявка охватывает соответствующую конструкцию, материал или действия, описанные в настоящем документе (или их аналоги) в соответствии с 35 U.S.С. § 112, пунктом 6 Свода законов США.