Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> MATLAB

MATLAB 2-D обратное косинусное преобразование: восстановление изображений из частотных данных

Обратное косинусное преобразование, часто обозначаемое как ICT или IDCT, — это математическая операция, которая обращает процесс косинусного преобразования. Она особенно полезна в обработке сигналов и изображений для восстановления сигналов или изображений из их представлений в частотной области.

В контексте 2-D сигналов или изображений, 2-D обратное косинусное преобразование (2-D ICT или 2-D IDCT) преобразует матрицу косинусных коэффициентов (представляющую частотное содержимое сигнала или изображения) обратно в пространственную область, давая исходный сигнал или изображение.

2-D обратное дискретное косинусное преобразование в MATLAB используется для преобразования матрицы косинусных значений в пространственное изображение. Это обратная операция 2-D косинусного преобразования и обычно используется в обработке и сжатии изображений. Функция idct2 используется для выполнения 2-D обратного косинусного преобразования в MATLAB.

2-D обратное дискретное косинусное преобразование

В MATLAB функция idct2 используется для выполнения 2-D обратного косинусного преобразования. Она принимает матрицу косинусных коэффициентов на входе и возвращает пространственное представление сигнала или изображения. Результат — восстановленное изображение, которое может быть отображено или дальше обработано.

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

Синтаксис

B = idct2(A)
B = idct2(A,m,n)
B = idct2(A,[m n])

Пояснение синтаксиса

B = idct2(A) — вычисляет двумерное обратное дискретное косинусное преобразование (IDCT) матрицы A, возвращая результат в матрице B. Эта операция эффективно восстанавливает пространственное изображение из его частотного представления в A.

B = idct2(A, m,n) — вычисляет двумерное обратное дискретное косинусное преобразование (IDCT) матрицы A и задает размер выходной матрицы B как m-на-n. Эта операция восстанавливает пространственное изображение из его частотного представления в A, изменяя его размер до заданных размеров m-на-n.

B = idct2(A, [m,n]) — вычисляет двумерное обратное дискретное косинусное преобразование (IDCT) матрицы A и изменяет размер выходной матрицы B так, чтобы она имела m строк и n столбцов. Эта операция восстанавливает пространственное изображение из его частотного представления в A, изменяя его размер до заданных размеров [m n].

Давайте посмотрим несколько примеров для 2-D обратного дискретного косинусного преобразования.

Пример 1: Удаление высоких частот из изображения с помощью функции idct2()

Код следующий:

img = imread('autumn.tif');
% Преобразование в оттенки серого при необходимости
if size(img, 3) == 3
    img = rgb2gray(img);
end
% Вычисление 2-D DCT
dct_img = dct2(double(img));
% Установка порога для удаления высоких частот (например, оставить только первые 50 коэффициентов)
threshold = 50;
dct_img_thresh = dct_img;
dct_img_thresh(threshold+1:end, :) = 0;
dct_img_thresh(:, threshold+1:end) = 0;
% Вычисление обратного 2-D DCT для получения отфильтрованного изображения
filtered_img = uint8(idct2(dct_img_thresh));
% Отображение оригинального и отфильтрованного изображений
figure;
subplot(1, 2, 1); imshow(img); title('Original Image');
subplot(1, 2, 2); imshow(filtered_img); title('Filtered Image');

В примере:

При выполнении вывод получается:

(оригинал и сглаженное изображение без высоких частот)

Пример 2: Изменение размера изображения с помощью B = idct2(A, m,n)

Код следующий:

% Чтение изображения
img = imread('autumn.tif');
% Преобразование изображения в оттенки серого
if size(img, 3) == 3
    img = rgb2gray(img);
end
% Вычисление 2-D DCT изображения
dct_img = dct2(double(img));
% Изменение размера матрицы коэффициентов DCT (частотного представления) до меньшего размера
% Давайте изменим размер до половины оригинала
new_size = size(img) / 2;
dct_resized = imresize(dct_img, new_size);
% Вычисление обратного 2-D DCT для получения изображения с измененным размером
resized_img = uint8(idct2(dct_resized, size(img, 1), size(img, 2)));
% Отображение оригинального и измененного изображений
subplot(1, 2, 1); imshow(img); title('Original Image');
subplot(1, 2, 2); imshow(resized_img); title('Resized Image using 2-D IDCT');

В примере:

Вывод при выполнении:

(оригинал и уменьшенное через IDCT изображение)

Пример 3: Изменение размера матрицы с помощью 2-D обратного дискретного косинусного преобразования (IDCT)

Код следующий:

% Создание образцовой матрицы A
A = [ 10, 20, 30, 40;
      50, 60, 70, 80;
      90, 100, 110, 120;
      130, 140, 150, 160 ];
% Отображение оригинальной матрицы A
disp('Original Matrix A:');
disp(A);
% Вычисление 2-D IDCT от A и изменение размера до матрицы 3x2
B = idct2(A, [3, 2]);
% Отображение измененной матрицы B
disp('Resized Matrix B (3x2):');
disp(B);

В этом примере мы создаем 4x4 образцовую матрицу A. Затем применяем 2-D IDCT к A и изменяем размер результата до 3x2 матрицы [m, n] = [3, 2]. Измененная матрица B отображается после преобразования.

Вывод получается следующим:

Original Matrix A:
10 20 30 40
50 60 70 80
90 100 110 120
130 140 150 160
Resized Matrix B (3x2):
122.0957 -11.9692
-97.4491 1.6910
12.0957 -1.9692

MATLAB

  1. Визуализация математических выражений в MATLAB: руководство по 2D и 3D построению графиков
  2. Освоение собственных значений и собственных векторов в MATLAB: практическое руководство
  3. Функции в MATLAB: определение, рабочая область, входные и выходные аргументы
  4. Импорт данных в MATLAB: эффективная загрузка внешних файлов
  5. Интегрирование в MATLAB: от неопределенных интегралов к суммам Римана
  6. MATLAB: фильтр Лапласиана Гаусса для детекции границ
  7. Преобразования в MATLAB: Лаплас, Фурье, БПФ (FFT)
  8. Быстрое руководство: Настройка окружения MATLAB
  9. MATLAB: эффективное вычисление производных полиномов
  10. Векторы в MATLAB: Строковые, столбцовые и основные операции