2013-04-18 2 views
1

Возьмите, к примеру, символ «B», «M» или «1», «2» в качестве изображения.
Мне нужно выяснить соотношение сторон этого символа или цифры.
я не получил правильное значение, это мой код:Как найти соотношение сторон изображения

E = imread('1.jpg'); 
level = graythresh(E); 
BW = im2bw(E,level); 
[m,n]=size(BW); 
AR=m/n 

enter image description here

+0

связанный (не дублирующий) вопрос: [подсчитать количество пикселей на переднем плане и в фоновом режиме на изображении] (http://stackoverflow.com/questions/16055949/count-the-number-of-foreground-and-background- пиксель-в-изображении) – Shai

ответ

5

Вы должны принять соотношение сторон прямоугольника, ограничивающего характера

s = regionprops(BW, 'BoundingBox'); 
AR = s.BoundingBox(4)/s.BoundingBox(3); 

См doc regionprops для значений в 'BoundingBox'.

+0

Я получил ошибку «Использовать bwlabel (BW) или двойное (BW) преобразование двоичного изображения в матрицу меток перед вызовом regionprops». После этого я использую L = bwlabel (BW); s = regionprops (L, 'BoundingBox'); Затем я получил ошибку в строке AR = s.BoundingBox (4)/s.BoundingBox (3) – aryan

+0

@aryan вы получаете ошибку, вероятно, потому, что у вас есть более одного подключенного компонента в 'BW'. используйте тот же цикл, который я использовал в ответе на ваш предыдущий вопрос. Или используйте 'double (BW)', чтобы убедиться, что вы обрабатываете все пиксели «1» как один и тот же объект (в вашем примере это выглядит как предпочтительный метод). – Shai

+0

я использую ** двойной (BW) **, я получаю результат. Большое спасибо.. – aryan

Смежные вопросы