0

我有一个 .png 格式的大脑核磁共振图像。我读取图像并提取 K-Space 并将一些 K-Space 设置为 0

img_fft = fftshift(fft2(img));
sizes = size(img_fft);

row_half = sizes(1)/2;
flag = true;
for r = row_half:sizes(1)
    for c = 1:sizes(2)
        img_fft(r,c) = 0+1i*0;
    end
end

在此之后,我使用将图像更改回图像空间

img_back = ifft2(ifftshift(img_fft));

在此之后,我将图像转换为 uint8,因为那是原始图像格式。当我尝试使用 imshow() 绘制图像时,与使用 imwrite 编写图像时相比,我得到了不同的输出。另外,如果我在 imwrite 中使用 abs(img_back) 我会收到错误消息。

使用 abs 时出错:不支持复杂整数。

我的绘图代码如下:

img_back = ifft2(ifftshift(img_fft));
img_back = cast(img_back,'uint8');
subplot(1,3,1), imshow(img)
subplot(1,3,2), imshow(img_back)
subplot(1,3,3), imshow(abs(img_fft),[])
imwrite(abs(img_back),'back_img.png','png')

有人可以告诉我我在这里做错了什么吗?

4

1 回答 1

1

傅里叶逆变换后取绝对值,然后将结果转换为uint8类型:

img_back = abs(ifft2(ifftshift(img_fft)));
img_back = cast(img_back,'uint8');
于 2021-10-06T20:10:33.680 回答