Как обнаружить все прямоугольники на изображении? - PullRequest
0 голосов
/ 18 февраля 2019

На следующем рисунке все прямоугольники немного деформированы из-за эффекта утечки мощности.Я хочу, чтобы обнаружить все прямоугольники и получить положение прямоугольников.Если количество прямоугольников является произвольным (может быть неизвестным), как его обнаружить?

image

Есть ли способ обнаружить все прямоугольники с помощью MATLAB?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Вам необходимо выполнить порог изображения с некоторым уровнем.И выполнить regionprops().Прочитайте справочную документацию MATLAB.Также см. Код MATLAB ниже.

clc
MainImg = imread('ifVsy.jpg');
BinImg = im2bw(MainImg,graythresh(MainImg));

Objects = regionprops(BinImg,'centroid');
AllCenters = cat(1, Objects.Centroid);

imshow(MainImg);
hold on
plot(AllCenters(:,1),AllCenters(:,2),'r*');
hold off

Result Image

0 голосов
/ 18 февраля 2019

Прямоугольники на черном фоне, поэтому самый простой способ сделать это - рассмотреть изображение как простой двумерный массив со значениями от 0 до любого значения (при условии, что 0 черный).

Затем можнооператор write и оператор, в котором значение массива больше 0, выводят координаты массива по x и y в новый массив.После того, как вы это сделаете, вы можете написать другой скрипт, чтобы найти углы блоков, посмотрев, может ли каждая координата быть равной другой координате, если вы добавили или вычли 1, это даст вам количество блоков и координаты вкаждая коробка.

Тогда вы сможете найти центр оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...