I am trying to apply some blur using a low pass filter to a dicom image, however my resulting dicom image is not correct (see image below) (all data below is publicly available)
from scipy import fftpack
import numpy as np
import imageio
from PIL import Image, ImageDraw
import numpy as np
import pydicom
def test(matrix):
image1_np = matrix #read_xray2("./CT000000.dcm")
#fft of image
fft1 = fftpack.fftshift(fftpack.fft2(image1_np))
#Create a low pass filter image
x,y = image1_np.shape[0],image1_np.shape[1]
#size of circle
e_x,e_y=50,50
#create a box
bbox=((x/2)-(e_x/2),(y/2)-(e_y/2),(x/2)+(e_x/2),(y/2)+(e_y/2))
low_pass=Image.new("L",(image1_np.shape[0],image1_np.shape[1]),color=0)
draw1=ImageDraw.Draw(low_pass)
draw1.ellipse(bbox, fill=1)
low_pass_np=np.array(low_pass)
#multiply both the images
filtered=np.multiply(fft1,low_pass_np)
#inverse fft
ifft2 = np.real(fftpack.ifft2(fftpack.ifftshift(filtered)))
ifft2 = np.maximum(0, np.minimum(ifft2, 255))
return ifft2
dicom = pydicom.dcmread("./CT000000.dcm")
dicom.PixelData = test(dicom.pixel_array)
dicom.save_as(r"./result.dcm")