How to blur text in image?

2 ビュー (過去 30 日間)
Dominik Mattioli
Dominik Mattioli 2021 年 6 月 10 日
コメント済み: Johndel Chan 2022 年 1 月 26 日
I'd like to blur only the text found in some images (potentially-sensitive medical information). I'm struggling to remember how to convert bounding boxes into matrix indices, or whether there is a function that does the following.
img = imread('businessCard.png');
imgOCR = ocr( img )
for idx = 1:numel( imgOCR.Words )
bbox = imgOCR.WordBoundingBoxes( idx, : )
subImg = imcrop( img, bbox )
K = medfilt2( subImg )
%%% How to insert K back into img? something like:
% newImg = iminsert( img, bbox, K );
end

採用された回答

Image Analyst
Image Analyst 2021 年 6 月 10 日
Somehow you need to create a mask defining where the text is. Once you got that, blur the entire image, and blur the mask also. Then get the new larger mask and assign the blurred image to the original image in the blurred mask. In short, something like
windowSize = 15; % Whatever.
kernel = ones(windowSize, windowSize) / windowSize^2;
% Blur the mask and the image.
blurredImage = conv2(double(grayimage), kernel, 'same');
blurredMask = conv2(double(mask), kernel, 'same');
newMask = blurredMask > 0; % Mask is now bigger since it got blurred.
% Replace original pixels with blurred pixels.
grayImage(newMask) = blurredImage(newMask);
It would be easier to simply erase the image in the mask than to blur the text and replace it.
grayImage(mask) = 0;
  8 件のコメント
Cassandra Adela
Cassandra Adela 2022 年 1 月 26 日
Johndel Chan
Johndel Chan 2022 年 1 月 26 日
@DGM Thanks for the help and I really appreciate the explanation you gave for each solution that you provided! The script now works on my end too. Being partly new to image processing, it seems like I have a lot more to learn about it.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeConvert Image Type についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by