extract text from image
显示 更早的评论

this code extract object random i want to extract letter line by line sequential
%%Image segmentation and extraction
%%Read Image
imagen=imread('image_a.jpg');
%%Show image
figure(1)
imshow(imagen);
title('INPUT IMAGE WITH NOISE')
%%Convert to gray scale
if size(imagen,3)==3 % RGB image
imagen=rgb2gray(imagen);
end
%%Convert to binary image
threshold = graythresh(imagen);
imagen =~im2bw(imagen,threshold);
%%Remove all object containing fewer than 30 pixels
imagen = bwareaopen(imagen,30);
pause(1)
%%Show image binary image
figure(2)
imshow(~imagen);
title('INPUT IMAGE WITHOUT NOISE')
%%Label connected components
[L Ne]=bwlabel(imagen);
%%Measure properties of image regions
propied=regionprops(L,'BoundingBox');
hold on
%%Plot Bounding Box
for n=1:size(propied,1)
rectangle('Position',propied(n).BoundingBox,'EdgeColor','g','LineWidth',2)
end
hold off
pause (1)
%%Objects extraction
figure
for n=1:Ne
[r,c] = find(L==n);
n1=imagen(min(r):max(r),min(c):max(c));
imshow(~n1);
pause(0.5)
end
1 个评论
Image Analyst
2016-8-13
ahmed hasn't been here in 3 years. You'll have to do it without him. Why not use text() or line()?
采纳的回答
更多回答(3 个)
deeksha h r
2016-8-13
0 个投票
respected sir,the code used is displaying segmented letter but we need segmented line to be displayed ie each text line from the image is to be displayed.can you please help us with this code
Arvinder singh
2017-11-1
0 个投票
https://www.youtube.com/watch?v=qzjE-4yRMCA
Sharad Sirsat
2019-11-23
0 个投票
You dont need to used "imagen = bwareaopen(imagen,30);" over here, Simply after converting image into binary,Use " bwlabel" to count number of character/objects in an image,After that in an image you can find the centroid of each character and then using Regionprops find their Length, Width to create a bounding box around character.Once you have done bounding box you can crop character individually by giving original image input.
Note: For centroid, bounding box(regionprops) and for imagecrop apply forloop till the counted no of objects/characters.
1 个评论
Image Analyst
2019-11-23
But if you don't use bwareaopen(), you'll get a lot of small noise specks that are not letters. Who wants to deal with those????
Plus, if you don't do it like I did, line-by-line, then you'll have labels that are randomly (almost) chosen from each line. To avoid that you'd have to go through some special code, like get the y coordinates of each blob, and use something like kmeans() to find out which blobs are in the same line of text.
类别
在 帮助中心 和 File Exchange 中查找有关 Descriptive Statistics 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


