how to get horizontal projection of histogram of an binary image ?and based on that how to segment of each line in the image? please suggest me

3 visualizzazioni (ultimi 30 giorni)
<<
>>
<<
>> this is my ZjSqKcW.jpg and on the bases of this image i want the horizontal projection of histogram like g.png and after the histogram i want the segmentation of each line.how to do please suggest

Risposta accettata

Alessandro Masullo
Alessandro Masullo il 20 Mag 2016
Given your image im, you can binarize it with im2bw:
bw = 1-im2bw(image);
The horizontal histogram (I guess) is the sum of the object in the horizontal direction, which is
h = sum(bw,2)
You can then plot it with:
figure
plot(sum(bw,2),1:size(bw,1))
Which gives you the image attached.
The segmentation could be performed with findpeaks.
  5 Commenti
Image Analyst
Image Analyst il 21 Mag 2016
Threshold it and then use regionprops(labeledImage, 'PixelIdxList') to find where each line starts and stops (what row indexes), or what rows have text in them.
ayushi
ayushi il 21 Mag 2016
sir will you please explain it with the help of example i tried the following code but its not working properly and also i am not able to detect where is the error in this:
%DESKEWING
% Find the coordinates of all the pixels
[y, x] = find(Iedge2);
% Fit them to a line
coefficients = polyfit(x, y, 1);
% Get a line from the left to the right
xEnds = [1, columns];
yEnds = polyval(coefficients, xEnds);
hold on;
line(xEnds, yEnds, 'Color', 'r');
% Get the angle
angle = atand((yEnds(2) - yEnds(1)) / (xEnds(2) - xEnds(1)));
rotatedImage = imrotate(Iedge2, angle);
% Display the rotated image.
subplot(2, 2, 4);
imshow(rotatedImage, [],'Parent',handles.axes2);
title('Binary Image', 'FontSize', 10);
%regionprops to get all the BoundingBoxes form your lines
stats=regionprops(rotatedImage,'BoundingBox');
figure, imshow(rotatedImage)
BoundingBoxes=struct2cell(stats);
BoundingBoxes=cell2mat(BoundingBoxes'); % making it into an array
[~,ind]=sort(BoundingBoxes(:,2)); % sorting it to y
BoundingBoxes=BoundingBoxes(ind,:); % apply the sorted vector
lineNr=8;
imshow(original(BoundingBoxes(2,lineNr):...
BoundingBoxes(2,lineNr)+BoundingBoxes(4,lineNr),...
BoundingBoxes(1,lineNr):BoundingBoxes(1,lineNr)+BoundingBoxes(3,lineNr) ))

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Images in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by