# Blurring an image using FFT (Fast Fourier Transform)

조회 수: 49(최근 30일)
Kanak Dhotre 2021년 9월 26일
답변: yanqi liu 2021년 9월 27일
I have an image of a ramp (Fig 1.1). Since every row of in this image is the same, I just picked the first row and ran FFT over it, then since convolution is equivalent to multiplication in the frequency domain, I multiplied it with the FFT of a gaussian vector. But when I run IFFT over the product, I don't get a blur image, instead I just get a completely white image (Fig 1.2) . What am I doing wrong?
Figure 1.1
Figure 1.2
My Code:
%Import the image
%Convert to grayscale
I = rgb2gray(I);
imshow(I)
%Pick a row
row = I(1,:);
plot(row)
%Define the gaussian vector
time_vector = 1:500
gaussian_vector = gaussmf(time_vector,[1 0]);
%Compute IFFT(FFT()*FFT())
row_fill = ifft(fft(row).*fft(gaussian_vector))
plot(row_fill)
%Stack the resultant rows
I_fill = repmat(row_fill,500,1);
%Plot the resultant image
imshow(I_fill)

댓글을 달려면 로그인하십시오.

### 답변(2개)

Image Analyst 2021년 9월 27일
Try []:
imshow(I_fill, [])
but you'll likely notice no difference at all because of how smooth the function already is.
##### 댓글 수: 0표시숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

yanqi liu 2021년 9월 27일
sir, may be use the follows code to ref
clc
close all
clear all
%Import the image
%Convert to grayscale
I = rgb2gray(I);
imshow(I)
%Pick a row
row = I(1,:);
figure;plot(row)
%Define the gaussian vector
time_vector = 1:500;
gaussian_vector = gaussmf(time_vector,[1 0]);
%Compute IFFT(FFT()*FFT())
row_fill = ifft(fft(row).*fft(gaussian_vector));
plot(row_fill)
%Stack the resultant rows
I_fill = repmat(row_fill,500,1);
%Plot the resultant image
figure; imshow(mat2gray(I_fill))

댓글을 달려면 로그인하십시오.

### 범주

Find more on Image Transforms in Help Center and File Exchange

R2021a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by