В этом примере показано, как обнаружить углы в изображении с помощью блока Corner Detection.
Откройте модель Simulink®.
modelname = 'ex_blkCornerDetection.slx';
open_system(modelname)
Модель читает изображение входа RGB с помощью блока Image From File и преобразует его в изображение интенсивности с помощью блока Color Space Conversion.
Чтобы обнаружить углы во входном изображении, модель использует блок Corner Detection. Блок использует метод детектирования углов методом Харриса, и значением Максимального количества углового параметра является 25
.
Модель использует блок Draw Markers и блок Video Viewer, чтобы отобразить все углы, обнаруженные во входном изображении.
Отображенное изображение показывает некоторые побочные углы в темном фоне изображения. Модель использует другие блоки в области Filter Corner Points, чтобы удалить эти побочные углы и сохранить углы цветка только. Область Filter Corner Points выбирает фиксированный размер, квадратные видимые области (ROIs) вокруг каждой обнаруженной угловой точки, и затем находит среднее значение каждого ROI. Средние значения ROI вокруг углов, обнаруженных в темном фоне, ниже, чем другие ROI. Чтобы отфильтровать эти побочные углы, модель выбирает желаемое количество углов от тех, которые соответствуют ROI с самыми высокими средними значениями. Область Filter Corner Points включает эти блоки:
Избранный блок ROI — This MATLAB Function (Simulink) генерирует технические требования квадратных ROI вокруг каждого обнаруженного угла. Технические требования включают координаты верхнего левого угла и параметры ширины и высоты каждого ROI в форме [x y width height
]. Поскольку каждый ROI является квадратным, значения ширины и параметров высоты равны. Модель использует блок Constant (Simulink), чтобы установить ширину каждого ROI к 50
.
2D Среднее значение — Этот блок вычисляет среднее значение каждого, выбрал ROI во входном изображении.
Избранный блок Corners — This MATLAB Function (Simulink) выбирает желаемое количество угловых точек, соответствующих ROI с самыми высокими средними значениями. Модель использует блок Constant (Simulink), чтобы определить желаемый номер угловых точек к 10
.
Чтобы отобразить отфильтрованные угловые точки в изображении, модель использует блок Draw Markers и блок Video Viewer. Симулируйте модель и отобразите результаты.
sim(modelname);