对图像进行快速傅里叶变换,然后计算两张图像在频域空间的L1loss

对图像进行快速傅里叶变换,然后计算两张图像在频域空间的L1loss

import numpy as np
import torch.nn as nn
import torch
import cv2



def kuaisufuliyebianhuan(src_path):
    # 1 读取图像 0表示按照灰度图片读取
    img = cv2.imread(src_path, 0)
    # 2 傅里叶变换
    # 2.1 正变换
    dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
    # 2.2 频谱中心化
    dft_shift = np.fft.fftshift(dft)
    # 2.3 计算频谱和相位谱
    mag, angle = cv2.cartToPolar(dft_shift[:, :, 0], dft_shift[:, :, 1], angleInDegrees=True)
    mag = 20 * np.log(mag)
    return mag

def main_loss(src_path01, src_path02):

    mag01 = kuaisufuliyebianhuan(src_path01)
    mag02 = kuaisufuliyebianhuan(src_path02)

    loss = nn.L1Loss()
    mag01 = torch.tensor(mag01, requires_grad=True)
    mag02 = torch.tensor(mag02)
    loss_value = loss(mag01, mag02)
    return loss_value
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在MATLAB中使用快速傅里变换(FFT)和Wienerhinchin定理来计算图像的自相关,可以按照以下步骤进行: ```matlab % 读取图像 image = imread('image.jpg'); % 将图像转换为灰度图像(如果不是灰度图像) if size(image, 3) > 1 grayImage = rgb2gray(image); else grayImage = image; end % 将图像转换为double类型 grayImage = im2double(grayImage); % 计算图像傅里变换 fftImage = fft2(grayImage); % 计算谱的共轭 conjSpectrum = conj(fftImage); % 计算自相关的功率谱(使用Wiener-Khinchin定理) powerSpectrum = fftImage .* conjSpectrum; % 将功率谱转换回空(使用逆傅里变换) autocorrImage = ifft2(powerSpectrum); % 对结果进行平移,使原点位于图像中心 autocorrImage = fftshift(autocorrImage); % 显示自相关图像 imshow(abs(autocorrImage), []); ``` 在这个示例中,首先读取了一个图像,并将其转换为灰度图像。然后,将图像转换为`double`类型,以便进行傅里变换。接下来,使用`fft2`函数计算图像的二维傅里变换。然后,计算谱的共轭,即将傅里变换结果取复共轭。接下来,将傅里变换结果与共轭谱相乘,以得到功率谱。然后,使用`ifft2`函数进行傅里变换,以得到自相关的结果。最后,使用`fftshift`函数对结果进行平移,使原点位于图像中心,并使用`imshow`函数显示自相关图像。 请注意,为了正确计算自相关,我们将图像谱转换为`double`类型,并在最后使用`abs`函数取结果的绝对值。`imshow`函数的第二个参数`[]`用于对显示的图像进行归一化处理。 请确保将代码中的`'image.jpg'`替换为你实际使用的图像文件路径。此外,你可以根据需要对代码进行修改和扩展,以适应特定的图像处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值