开发者

how to perform character segmentation in Matlab [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist

Closed 9 years ago.

开发者_如何学运维 Improve this question

I have license plate image and I want to cut the numbers one by one.

any one have simple idea how to perform it?

after searching the web I found a way by doing the operation of horizontal and vertical smearing, but I really don't know what does it mean.

any explanation would help

Thanks in advance.


regionprops might work for you. If you take this sample license plate.

how to perform character segmentation in Matlab [closed]

You could use a little script like this to cut out objects. Sorry, I just typed it together really quickly, but it gives you an idea.

clear all;
close all;
I = imread('plate.jpg');
BW = im2bw(I, 0.9);
BW = ~BW;


stats = regionprops(BW);
for index=1:length(stats)
    if stats(index).Area > 200 && stats(index).BoundingBox(3)*stats(index).BoundingBox(4) < 30000
    x = ceil(stats(index).BoundingBox(1))
    y= ceil(stats(index).BoundingBox(2))
    widthX = floor(stats(index).BoundingBox(3)-1)
    widthY = floor(stats(index).BoundingBox(4)-1)
    subimage(index) = {BW(y:y+widthY,x:x+widthX,:)}; 
    figure, imshow(subimage{index})
    end
end

This will output images like

how to perform character segmentation in Matlab [closed]

and this

how to perform character segmentation in Matlab [closed]

You still have to decide if it really is a letter. Be careful, the script will output a lot of images (about 30 or 40)


you can try this code(it's not mine)

% This is a program for extracting objects from an image. Written for vehicle number     plate segmentation and extraction
% Authors : Jeny Rajan, Chandrashekar P S
% U can use attached test image for testing
% input - give the image file name as input. eg :- car3.jpg
clc;
clear all;
k=input('Enter the file name','s'); % input image; color image
im=imread(k);
im1=rgb2gray(im);
im1=medfilt2(im1,[3 3]); %Median filtering the image to remove noise%
BW = edge(im1,'sobel'); %finding edges 
[imx,imy]=size(BW);
msk=[0 0 0 0 0;
 0 1 1 1 0;
 0 1 1 1 0;
 0 1 1 1 0;
 0 0 0 0 0;];
B=conv2(double(BW),double(msk)); %Smoothing  image to reduce the number of connected     components
L = bwlabel(B,8);% Calculating connected components
mx=max(max(L))
% There will be mx connected components.Here U can give a value between 1 and mx for L     or in a loop you can extract all connected components
% If you are using the attached car image, by giving 17,18,19,22,27,28 to L you can     extract the number plate completely.
[r,c] = find(L==17);  
rc = [r c];
[sx sy]=size(rc);
n1=zeros(imx,imy); 
for i=1:sx
x1=rc(i,1);
y1=rc(i,2);
n1(x1,y1)=255;
end % Storing the extracted image in an array
figure,imshow(im);
figure,imshow(im1);
figure,imshow(B);
figure,imshow(n1,[]);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜