[Шумоподавление изображения] Исходный код Matlab для шумоподавления изображения на основе BM3D

MATLAB
[Шумоподавление изображения] Исходный код Matlab для шумоподавления изображения на основе BM3D

1. Обзор

BM3D - это статья TIP 2007 года с заголовкомImage denoising by sparse 3D transform-domain collaborative ltering, адрес статьи и проекта: http://www.cs.tut.fi/~foi/GCF-BM3D/, код Matlab;woohoo.IPOZero.im/universal/art/201…

BM3D, обрабатывающий изображения в градациях серого, и его варианты CBM3D (цветное изображение) и VBM3D (временная область) признаны лучшим эффектом шумоподавления (PSNR) в области шумоподавления изображений, а BM4D, VBM4D и т. д. также унаследованы от BM3D. основан на идее поблочной оценки, но его вычислительная временная сложность чрезвычайно велика, и его можно использовать только для автономной обработки (оффлайн).


这里写图片描述

Найдите похожие блоки и получите набор блоков


BM3D — это модернизированная версия NLM (нелокальное среднее), потому что она в основном использует идею нелокального сопоставления блоков, сначала для поиска похожих блоков, отличных от традиционной NLM с использованием расстояния L2, она использует линейное преобразование с жестким порогом ( видетьРаздел 2-2) уменьшает сложность расстояния L2; после нахождения похожих блоков NLM выполняет процесс среднего значения, в то время как BM3D преобразует область похожего блока и предлагает совместную фильтрацию для уменьшения шума, содержащегося в самих похожих блоках (NLM вычисляет среднее значение и вводит подобные блоки шума) (см.Раздел 2-2) и взвешивать аналогичные блоки при агрегации (см.Раздел 2-3), чтобы получить целевой блок с шумоподавлением.

Сложность BM3D заключается в том, что он сначала находит похожие блоки, а затем использует две поблочные оценки, сложность удваивается по сравнению с NLM и включает в себя операции преобразования домена.

2. Описание алгоритма

1. Блок-схема

这里写图片描述
Разделено на два этапа: базовая оценка и окончательная оценка, за исключением того, что эти два этапа отличаются от совместной фильтрации, остальные подэтапы аналогичны. в:

  • S1 Basic estimate:

    • S11 Block-wise estimate

      • S111 Группировка находит аналогичные блоки для целевого блока, и набор блоков не имеет ограничений по порядку;
      • S112 Совместное жесткое определение порога использует определенный метод преобразования домена для получения «преобразованного набора похожих блоков», принимает совместную (определяемую совместно похожими блоками) стратегию жесткого порога для «ослабления» шума похожих блоков, а затем выполняет обратное обратное преобразование. к исходному блочному домену;
    • S12 Aggregation Средневзвешенные аналогичные блоки (после обработки S112), после наложения, целевой блок после получения базовой оценки;

  • S2 Final estimate:

    • S21 Block-wise estimate

      • S211 Группировка Используйте набор блоков на этапе S111 и пересчитайте набор блоков из изображения, которое было обработано этапом S1.
      • S212 Совместная фильтрация Винера После преобразования домена используйте фильтрацию Винера
    • S22 Aggregation

2. S111 Группировка для поиска похожих блоков

В этой статье используется оценка расстояния L2, а для предварительной обработки блочного расстояния используются нормализованное линейное преобразование 2D и жесткие пороги Формула выглядит следующим образом:
这里写图片描述
Поскольку изображение содержит шум, вычисляется расстояние L2, шум увеличивает разницу между двумя похожими блоками, и может быть найден неверный похожий блок.
в,

  • x — пиксель, X — изображение
  • 这里写图片描述целевой блок,这里写图片描述блок поиска
  • 这里写图片描述размер блока в S1
  • 这里写图片描述Работа жесткого порога, порог установлен на这里写图片描述
  • 这里写图片描述- нормализованное двумерное линейное преобразование

Множество подобных блоков можно найти по расстоянию, как показано в формуле (5),
这里写图片描述
в,

  • 这里写图片描述Определите, похожи ли гиперпараметры
  • 这里写图片描述за 这里写图片描述коллекция похожих блоков

3. S112 Совместное шумоподавление с жестким порогом аналогичного блока

Здесь используется нормализованное линейное 3D-преобразование.这里写图片描述чтобы уменьшить шум похожих блоков, затем используйте обратное преобразование这里写图片描述Получите аналогичные блоки, обработанные на этапе S112.这里写图片描述, как показано в следующей формуле (6),
这里写图片描述
в,

  • 这里写图片描述- нормализованное трехмерное линейное преобразование,这里写图片描述обратное преобразование
  • 这里写图片描述Работа жесткого порога, порог установлен на这里写图片描述
  • 这里写图片描述множество подобных блоков после обработки

а) зачем это делать

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

i. Некоторые похожие блоки имеют меньше шума, и "вес" этого блока должен быть больше, чем у других подобных блоков, а не просто усреднять

ii.Информация об изображении похожих блоков является избыточной.С пространственной точки зрения простое среднее значение двух похожих блоков с перекрывающимися областями вызовет дублирование информации о целевом блоке.

Таким образом, метод «Совместной фильтрации сжатием в области преобразования» может повысить разреженность похожих блоков и уменьшить шум похожих блоков.
这里写图片描述

4. Веса агрегации S12 для создания целевых блоков

То же самое для уменьшения информационной избыточности и собственных шумов подобных блоков, так что я думаю, что это соответствует назначению S112. После средневзвешенного значения получается значение пикселя целевого блока, как показано в формуле (12) (10):
这里写图片描述

这里写图片描述

в,

  • 这里写图片描述Масса
  • 这里写图片描述Количество ненулевых коэффициентов после операции жесткого порога
  • 这里写图片描述, при реальном поиске похожих блоков исходное изображение необходимо заполнять, а аналогичные блоки, полученные заполнением, не включаются в средневзвешенное значение

5. S211 Grouping

Из изображения, предварительно обработанного S1, пересчитать расстояние L2, чтобы получить набор подобных блоков.При этом жесткая пороговая обработка больше не используется.Формула представлена ​​в формуле (7):

这里写图片描述

в,

  • 这里写图片描述Гиперпараметры, используемые для определения того, похож ли шаг S2
  • 这里写图片描述коллекция похожих блоков

6. S212 Collaborative Wiener filtering

Аналогичный набор блоков, полученный на этапе S211这里写图片描述, после преобразования домена используйте коэффициенты усадки Винера这里写图片描述Взвешивание, а затем обратное преобразование для получения набора блоков这里写图片描述. Как показано в формулах (9) и (8).

这里写图片描述
这里写图片描述

7. S22 Aggregation

S12 было объяснено, S22 подобен S12, формула показана в формуле (11), и окончательный результат согласуется с шагами вычисления формулы (9).

这里写图片描述

3. Заключение

1. Ускорение

В реальной работе, чтобы ускорить скорость расчета BM3D, после шага поиска аналогичного блока результирующий блок фактически обрабатывается, а затем добавляется 1D-преобразование (с использованием дискретного вейвлет-преобразования 1D-Хаара в тексте), Станьте 3D-преобразованием, используйте метод преобразования 2D + 1D для замены прямого 3D-преобразования.

2. Трудности

2D-преобразование и различные гиперпараметры, упомянутые в этой статье, не имеют определенного значения.Для реального шумоподавления видео используемые 2D-преобразование и гиперпараметры могут отличаться от экспериментальных настроек статьи, поэтому требуется тонкая настройка, то есть требуется накопление большого количества экспериментов.

Окончательный результат шумоподавления показан на рисунке ниже, видно, что шум хорошо убирается, края изображения остаются нетронутыми, а текстура изображения хорошо восстанавливается.
这里写图片描述
Однако это тестовые изображения, созданные путем добавления гауссовского белого шума сами по себе.Если он действительно используется для шумоподавления изображения, исходное изображение не будет иметь такого большого количества шума, поэтому нет необходимости в двухэтапном шумоподавлении BM3D. Затем вы можете разобрать два шага BM3D, использовать жесткий порог предыдущего шага, 2D-преобразование для поиска похожих блоков, 1D-преобразование в 3D-область, а затем средневзвешенное значение или напрямую использовать фильтрацию Винера на последнем этапе, возможно, у него есть хороший эффект..

Следующий шаг подытожит вещи BM4D и VBM4D.

4. С-БМ3Д

Для цветных изображений в этой статье цветовое пространство RGB изображения преобразуется в цветовое пространство YUV, поскольку Y-компонент YUV содержит больше информации об изображении (край, материал, текстура и т. д.), чем остальные компоненты, и имеет более высокое отношение сигнал/шум. (отношение сигнал/шум). ), тогда как компоненты U и V несут больше низкочастотной информации.
Таким образом, для C-BM3D в этой статье компонент Y используется для поиска похожих блоков, а компоненты U и V используют аналогичную информацию о положении блока компонента Y.
这里写图片描述
Цветное изображение можно очистить от шума, следуя его методу преобразования цветового пространства и поиска похожих блоков из компонента Y.

5. ВБМ3Д

Для шумоподавления видео необходимо преобразовать видео в однокадровое изображение, а затем использовать алгоритм шумоподавления изображения для обработки одного кадра, а затем объединить для восстановления шумоподавляющего видео; предыдущий кадр не имеет шума или его меньше. шума, то его можно использовать как значение следующего кадра, но объект на видео движется, обрабатывать пиксели в том же положении предыдущего кадра нецелесообразно, поэтому будет введена компенсация движения и отслеживание. Алгоритм немного жестковат для обработки в реальном времени.

VBM3D не содержит компенсации движения, ищет похожие блоки в целевом блоке промежуточного кадра, а объектом поиска являются передний и задний кадры и промежуточный кадр.блочное сопоставление с прогнозирующим поиском (PS-BM), который используется для поиска похожих блоков предшествующего и последующего кадров. А именно, PS-BM сначала берет целевой блок промежуточного кадра за центр и область с радиусом поиска NS для поиска подобных блоков, а затем находит подобные блоки в области, соответствующей кадру до и после блока с поиском. радиус NPR как центр.. Подобные блоки кадра, предшествующий и последующий кадры составляют набор блоков. Остальные шаги ничем не отличаются от BM3D.
这里写图片描述

 
clear all;clc ;


pauseTime = 1;

filePaths = 'cameraman256.png';

noise_leval = [10,15,20,25,30,35,40,45,50,55,60,65,70];


for i = 1:length(noise_leval)

PSNRs = [];

SSIMs = [];

sigma = noise_leval(i);

for j = 1:length(filePaths)

y = imread(filePaths);

if length(size(y)) > 2

y = rgb2gray(y);

end

y = im2double(y);

z = y + (sigma/255)*randn(size(y));

% 生成噪声图像


[PSNR,SSIM,y_est] = BM3D(y, z, sigma, 'np', 0);

PSNRs(j) = PSNR;

SSIMs(j) = SSIM;


imshow(cat(2,im2uint8(y),im2uint8(z),im2uint8(y_est)));

title([num2str(sigma),num2str(PSNR,'%2.2f'),'dB',' ',num2str(SSIMs(j),'%2.4f')])

drawnow;

pause(pauseTime)

end

disp(['sigma:', sigma,' psnr:', mean(PSNRs),' ssim:', mean(SSIMs)]);

end

Полная загрузка кодаБлог Woohoo.cn на.com/talk о MATLAB/afraid/…