segment digits in an image - Matlab

后端 未结 2 1873
我在风中等你
我在风中等你 2020-12-11 05:29

I have an image of license plate in black and white.

this is how it looks:

\"enter

相关标签:
2条回答
  • 2020-12-11 05:52

    One simple way to generate your boxes is to sum your image down each column and look for where the sum drops below some threshold (i.e. where the white pixels drop below a given number in that column). This will give you column indices for where the boxes should be. The width of these boxes may be too narrow (i.e. small parts of the numbers may stick out the sides), so you can dilate the edges by convolving the index vector with a small vector of ones and looking for the resulting values that are greater than zero. Here's an example using your image above:

    rawImage = imread('license_plate.jpg');  %# Load the image
    maxValue = double(max(rawImage(:)));     %# Find the maximum pixel value
    N = 35;                                  %# Threshold number of white pixels
    boxIndex = sum(rawImage) < N*maxValue;   %# Find columns with fewer white pixels
    boxImage = rawImage;                     %# Initialize the box image
    boxImage(:,boxIndex) = 0;                %# Set the indexed columns to 0 (black)
    dilatedIndex = conv(double(boxIndex),ones(1,5),'same') > 0;  %# Dilate the index
    dilatedImage = rawImage;                 %# Initialize the dilated box image
    dilatedImage(:,dilatedIndex) = 0;        %# Set the indexed columns to 0 (black)
    
    %# Display the results:
    subplot(3,1,1);
    imshow(rawImage);
    title('Raw image');
    subplot(3,1,2);
    imshow(boxImage);
    title('Boxes placed over numbers');
    subplot(3,1,3);
    imshow(dilatedImage);
    title('Dilated boxes placed over numbers');
    

    enter image description here

    Note: The thresholding done above accounts for the possibility that the black-and-white image could be of type double (with values of either 0 or 1), logical (also with values of either 0 or 1), or an unsigned 8-bit integer (with values of either 0 or 255). All you have to do is set N to the number of white pixels to use as a threshold for identifying a column that contains part of a number.

    0 讨论(0)
  • 2020-12-11 06:11

    Assuming you have the box surrounding the letters - which gives you the overall angle

    Collapse the image down into 1d (may help to rotate it first so the bounding box is horizontal)

    Then look for the gaps between letters in this 1d signature giving you the positions of the digits. It helps if you know the number of digits and the format for the plates.

    0 讨论(0)
提交回复
热议问题