2011-03-16 140 views
0

該代碼假設在Matlab中從圖像執行字符分割。代碼是盧卡斯給我​​的,非常感謝盧卡斯。代碼解釋 - Matlab

問題是,我想精確理解字符分割是如何完成的,我不想在理解它之前使用它。

任何人都可以爲我解釋...謝謝。

盧卡斯代碼:

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 

鏈接:how to perform character segmentation in Matlab

+0

您應該查看http://www.mathworks.com/help/toolbox/images/ref/regionprops.html以瞭解有關regionprops及其屬性的信息。 – 2011-06-08 01:56:20

回答

1
clear all; % clear out workspace memory 
close all; % close all figures 
I = imread('plate.jpg'); % load image jpg into I 
BW = im2bw(I, 0.9); % convert color image to black and white image 
BW = ~BW; % swap black and white 
stats = regionprops(BW); % compute 'Area', 'Centroid', and 'BoundingBox' measurements. 
% The regionprops operation is what "cuts up" the image into possible pieces of interest. 
% You will need to develop your own code for processing. 
for index=1:length(stats) 
    % if the stats of the region meet a certain criteria 
    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) 
    % extract a subimage from the original image and show it. 
    subimage(index) = {BW(y:y+widthY,x:x+widthX,:)};  
    figure, imshow(subimage{index})  
end 

至於建議由Eugene,查看提供的鏈接。