How to remove text from an image?
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jhilam Mukherjee
el 1 de Mzo. de 2015
Comentada: Image Analyst
el 10 de En. de 2019
I am working on medical images. In most of the image contain patient details. While segmenting those images these texts are also segmented along with the region of interest. I want to remove those text from images before segmentation.
0 comentarios
Respuesta aceptada
Image Analyst
el 1 de Mzo. de 2015
Presumably those details are not covering up the image data you're interested in. So then you can just assign those pixels to 0 or some other intensity:
grayImage(row1:row2:col1:col2) = 0;
Of course you need to know what rows and columns contain your annotation.
4 comentarios
Image Analyst
el 17 de Jun. de 2017
Get rid of any blobs with a centroid within 10% of the edge of the image. This code works for both of your images:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 25;
%===============================================================================
% Get the name of the image the user wants to use.
% baseFileName = 'pat00002_1-1-1-1-2-10-1.mp4.cover.png';
baseFileName = '1-1-1-1-2-8-1 2.mp4.cover.png';
% Get the full filename, with path prepended.
folder = []; % Determine where demo folder is (works with all versions).
fullFileName = fullfile(folder, baseFileName);
%===============================================================================
% Read in a demo image.
grayImage = imread(fullFileName);
% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(grayImage)
if numberOfColorChannels > 1
% It's not really gray scale like we expected - it's color.
% Use weighted sum of ALL channels to create a gray scale image.
grayImage = rgb2gray(grayImage);
% ALTERNATE METHOD: Convert it to gray scale by taking only the green channel,
% which in a typical snapshot will be the least noisy channel.
% grayImage = grayImage(:, :, 2); % Take green channel.
end
% Display the image.
subplot(2, 2, 1);
imshow(grayImage, []);
axis on;
caption = sprintf('Original Gray Scale Image');
title(caption, 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;
hp = impixelinfo();
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Get rid of tool bar and pulldown menus that are along top of figure.
set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
drawnow;
% Binarize the image by thresholding.
mask = grayImage > 17;
% Display the mask image.
subplot(2, 2, 2);
imshow(mask);
axis on;
axis image; % Make sure image is not artificially stretched because of screen's aspect ratio.
title('Binary Image Mask', 'fontSize', fontSize);
drawnow;
% Find the areas
labeledImage = bwlabel(mask);
props = regionprops(labeledImage, 'Area', 'Centroid');
allAreas = sort([props.Area], 'descend')
allCentroids = [props.Centroid];
centroidsX = allCentroids(1:2:end);
centroidsY = allCentroids(2:2:end);
% Make a margin of 10% of the image size.
marginx = 0.1 * columns;
marginy = 0.1 * rows;
keepers = (centroidsX > marginx & centroidsX < (columns - marginx)) & ...
(centroidsY > marginy & centroidsY < (rows - marginy))
indexes = find(keepers);
% Get a mask with only the keepers in it
newMask = ismember(labeledImage, indexes);
% Display the mask image.
subplot(2, 2, 3);
imshow(newMask);
axis on;
axis image; % Make sure image is not artificially stretched because of screen's aspect ratio.
title('Binary Image Mask', 'fontSize', fontSize);
drawnow;
% Mask the gray scale image
maskedGrayImage = grayImage; % Initialize.
maskedGrayImage(~newMask) = 0;
% Display the masked grayscale image.
subplot(2, 2, 4);
imshow(maskedGrayImage);
axis on;
axis image; % Make sure image is not artificially stretched because of screen's aspect ratio.
title('Binary Image Mask', 'fontSize', fontSize);
title('Masked Gray Scale Image', 'fontSize', fontSize);
drawnow;
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/184891/image.png)
Imran
el 10 de En. de 2019
I have tried this code to my image named (Original) but it still leaves some unneceassary text. Output image named (Masked). Please give me code to remove it.
Más respuestas (2)
divya d
el 4 de Dic. de 2018
Am an reserach scholar. i tried the above code to remove the unnecessary patient details from echo images. i attached the result. verify it and suggest some other code. plz repy.
Imran
el 10 de En. de 2019
I have tried your this code to my image named (Original) but it still leaves some unneceassary text. Output image named (Masked). Please give me code to remove it.
3 comentarios
Imran
el 10 de En. de 2019
Actually I have shared you gray sclaed output images of Matlab. I have attached the actual RGB image. Can i remove more text as compared to image named Masked using Matlab???
Image Analyst
el 10 de En. de 2019
Actually, my answer stays unchanged. This is not the original image. You want the original image, not one with annotations imprinted on it. See if you can get the original images. They might be in dicom format which is used a lot in the medical field.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!