首页 > 解决方案 > 需要一个可逆图像变换函数,使得:

问题描述

是否存在一个可逆的图像变换函数F,如果我在图像X上应用F ,我会得到Y,并且Y看起来尽可能嘈杂和随机。如果我对Y应用模糊以获得Y*,然后将F (-1) (Y*)用于获得X*,那么XX*应该尽可能相似(如X的模糊版本)。

我非常感谢我能得到的任何帮助

标签: pythonimageopencvmathimage-processing

解决方案


您可以尝试这样做: 1. 计算图像的傅里叶变换。2. 对于每个频率,在不改变幅度的情况下,伪随机地(以特殊方式)移相。3. 进行傅里叶逆变换。我们会得到一个嘈杂的图像。如果我们过滤它,例如,使用高斯滤波器,那么我们可以恢复(知道伪随机相移函数)原始平滑图像。我测试了这个想法并编写了 Octave/Matlab 代码:

img=imread('Lena.png');
mag=abs(fft2(img));
ang=angle(fft2(img)); %phase
ns=angle(fft2(rand(size(img))));%phase random matrix
noise=mag.*exp(i*(ang+ns));
noise_img=uint8(abs(ifft2(noise))); %noise image
% add blur
f=fspecial('gaussian', 7, 3); % gaussian filter 7x7
noise_img_gauss=imfilter(noise_img, f); %noise image with gaussian blur
% recovery image
mag=abs(fft2(noise_img_gauss));
ang=angle(fft2(noise_img_gauss));
recov=mag.*exp(i*(ang-ns));
img_recovery=uint8(abs(ifft2(recov)));
imwrite(img_recovery, 'img_recovery.png');
imwrite(noise_img_gauss, 'noise_img_gauss.png');

源、带模糊的噪声图像和恢复图像: 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述


推荐阅读