How to deblur an image where the text is blurred by imgaussfilt() function?
28 views (last 30 days)
Currently, we have built our ID text blurring code using ocr() to detect all the text found on the image file then create a gaussian blur mask for each line of text using poly2mask from the values stored in bboxes.
Here's the code:
ID = imread('passport1.jpg');
imageSize = size(ID);
h = fspecial('disk', 3);
%Detect all text on ID
ocrResults = ocr(ID);
bboxes = ocrResults.WordBoundingBoxes(:,:);
[x,y] = size(bboxes);
for i = 1:x
xi = horzcat(bboxes(i,1), bboxes(i,1), ...
bboxes(i,1) + bboxes(i,3), bboxes(i,1) + bboxes(i,3));
yi = horzcat(bboxes(i,2), bboxes(i,2) + bboxes(i,4), ...
bboxes(i,2) + bboxes( i,4 ), bboxes(i,2));
%Convert Region of Interest to region mask
binaryImage = poly2mask(xi, yi, imageSize(1), imageSize(2));
%Use gaussian filter w/ 10 standard dev for larger filter
blurredImage = imgaussfilt(ID,20);
%Mask with 'same' option to retain size of
%output array from input array
blurredMask = imfilter(im2double(binaryImage),h,'same');
ID = im2uint8(im2double(blurredImage).*blurredMask + im2double(ID).*(1-blurredMask));
We tried functions such as deconvlucy():
luc1 = deconvlucy(ID,h,15);
noiseMean = 0;
noiseVar = 0.01;
blurred_noisy = imnoise(ID,'gaussian',noiseMean,noiseVar);
noisePower = noiseVar*numel(ID);
Edged = edgetaper(blurred_noisy,h);
reg3 = deconvreg(Edged,h,noisePower/1.2);
---which are added after the for loop so we can immediately see how the image was deblurred.
Here are the images:
After using the deblurring functions, it looks like it did little to no work on the filters
I would like to ask if there's a way to reverse the imgaussfilt() function that was used for the text blurring
Attached is the starting image file as well.
Thank you in advance!
Image Analyst on 31 Jan 2022
There's no way. The information has been totally lost and obliterated. No amount of deblurring will restore that in an image that has been converted to uint8 and saved to an image file. Perhaps if you had the original blurred image in floating point, but even there, I doubt it. This is real world, not Hollywood:
(Most hilarious misuse of image processing in movies)