Home How can I rotate connected components so that they are upright in Matlab?
Reply: 0

How can I rotate connected components so that they are upright in Matlab?

user1701
1#
user1701 Published in April 22, 2018, 6:51 am

Currently I am working with a sudoku grid and I have the binary image. I am using Regionprops to get the area of the connected components and then turn the rest of the image black. After this I call the OCR method to try and read the sudoku numbers. The problem is that this only works if the sudoku grid in the image is straight and upright. If it is rotated even a little bit I am not able to pull the numbers. This is the code I have so far:

% get grid connected parts
conn_part = bwconncomp(im_binary);

% blacken area outside
stats = regionprops(conn_part,'Area'); 
im_out = im_binary;  % Make mask
im_out(vertcat(conn_part.PixelIdxList{[stats.Area] < 825 | [stats.Area] > 2500})) = 0; 

imagesc(im_out); 
title("Numbers pulled");
sudokuNum = ocr(im_out,'TextLayout','Block','CharacterSet','0123456789');
sudokuNum.Text;

Where im_binary is the binary image

im_out is the output image

stats is the object returned from regionprops containing the area of the connected components

I know I can rotate the image before getting the OCR results by doing:

im_out = imrotate(im_out, angle)

However I don't know what angle the grid is at since this is part of a function that loops through for multiple images. I looked into the regionprops method because there is an attribute 'Orientation' which I can pull from there but I don't understand how I would actually use it. It also states that regionprops will return a value between -90 and 90, but my image could be rotated by more than 90 degrees.

You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.300779 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO