图像DFT的matlab代码
时间: 2023-11-24 11:06:46 浏览: 95
以下是MATLAB中进行图像DFT的示例代码:
% 读入图像
img = imread('lena.png');
% 转换为灰度图像
img = rgb2gray(img);
% 显示原始图像
figure, imshow(img);
% 计算DFT
dft = fft2(double(img));
% 将零频率移到中心
dft_shift = fftshift(dft);
% 取模值并进行对数变换
dft_mag = abs(dft_shift);
dft_mag_log = log(dft_mag + 1);
% 显示DFT结果
figure, imshow(mat2gray(dft_mag_log));
% 计算逆DFT
idft_shift = ifftshift(dft_shift);
idft = ifft2(idft_shift);
% 显示逆DFT结果
figure, imshow(mat2gray(real(idft)));
相关问题
伪随机数DFT水印matlab代码
以下是一个实现伪随机数DFT水印的 MATLAB 代码示例:
% 读取原始图像和水印图像
im = imread('original_image.jpg');
watermark = imread('watermark_image.jpg');
% 将图像转换为灰度图像
im_gray = rgb2gray(im);
watermark_gray = rgb2gray(watermark);
% 设置水印大小,这里假设水印大小小于原始图像大小
watermark_size = size(watermark_gray);
watermark_rows = watermark_size(1);
watermark_cols = watermark_size(2);
% 生成伪随机数序列
rand_seq = randi([0, 1], watermark_rows * watermark_cols, 1);
% 将伪随机数序列重塑为水印矩阵
watermark_matrix = reshape(rand_seq, watermark_rows, watermark_cols);
% 对水印矩阵进行DFT变换
watermark_dft = fft2(watermark_matrix);
% 对原始图像进行DFT变换
im_dft = fft2(im_gray);
% 将水印DFT矩阵嵌入原始图像DFT矩阵中
im_dft_watermarked = im_dft + watermark_dft;
% 将嵌入水印后的DFT矩阵转换为图像
im_watermarked = uint8(ifft2(im_dft_watermarked));
% 显示原始图像、水印图像和嵌入水印后的图像
figure;
subplot(1, 3, 1);
imshow(im);
title('Original Image');
subplot(1, 3, 2);
imshow(watermark);
title('Watermark Image');
subplot(1, 3, 3);
imshow(im_watermarked);
title('Watermarked Image');
% 保存嵌入水印后的图像
imwrite(im_watermarked, 'watermarked_image.jpg');
阅读全文