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

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

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

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

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

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

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

Обратное косинусное преобразование имеет решающее значение в различных приложениях, включая сжатие изображений (например, при сжатии 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].

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

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

У нас есть код —

img = imread('autumn.tif');
% Convert to grayscale if necessary
if size(img, 3) == 3
 img = rgb2gray(img);
end
% Compute 2-D DCT
dct_img = dct2(double(img));
% Set a threshold to remove high frequencies (e.g., keep only the first 50 coefficients)
threshold = 50;
dct_img_thresh = dct_img;
dct_img_thresh(threshold+1:end, :) = 0;
dct_img_thresh(:, threshold+1:end) = 0;
% Compute the inverse 2-D DCT to get the filtered image
filtered_img = uint8(idct2(dct_img_thresh));
% Display the original and filtered images
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)

У нас есть код —

% Read the image
img = imread('autumn.tif');
% Convert the image to grayscale
if size(img, 3) == 3
 img = rgb2gray(img);
end
% Compute the 2-D DCT of the image
dct_img = dct2(double(img));
% Resize the DCT coefficients matrix (frequency domain representation) to a smaller size
% Let's resize it to half the original size
new_size = size(img) / 2;
dct_resized = imresize(dct_img, new_size);
% Compute the inverse 2-D DCT to get the resized image
resized_img = uint8(idct2(dct_resized, size(img, 1), size(img, 2)));
% Display the original and resized images
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(resized_img);
title('Resized Image using 2-D IDCT');

В примере у нас есть —

Результат выполнения:—

Пример 3. Изменение размера матрицы с использованием двумерного обратного дискретного косинусного преобразования (IDCT)

У нас есть следующий код:

% Create a sample matrix A
A = [
 10, 20, 30, 40;
 50, 60, 70, 80;
 90, 100, 110, 120;
 130, 140, 150, 160
];
% Display the original matrix A
disp('Original Matrix A:');
disp(A);
% Compute the 2-D IDCT of A and resize it to a 3x2 matrix
B = idct2(A, [3, 2]);
% Display the resized matrix B
disp('Resized Matrix B (3x2):');
disp(B);

В этом примере мы создаем выборочную матрицу A размером 4x4. Затем мы применяем 2D 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. МАТЛАБ — Функции
  2. MATLAB — типы данных
  3. MATLAB:Лапласиан гауссовского фильтра для обнаружения краев
  4. MATLAB — Настройка среды
  5. MATLAB — вывод данных
  6. MATLAB — Массивы
  7. MATLAB — импорт данных
  8. MATLAB — принятие решений
  9. MATLAB — Операторы
  10. MATLAB — Векторы