Используйте функцию cnvxhull для поиска выпуклой оболочки пикселей со значением интенсивности переднего фона fg в матрице M. Выходные данные переводятся в двоичную форму, где 1 задается внутри выпуклой оболочки, а 0 - снаружи. Используемый алгоритм описан на странице 269 книги Digital Picture Processing (Обработка цифрового изображения) авторов A. Rosenfeld и A. C. Kak, 1982.
Оболочка ищется путем выбора P1 в качестве левой верхней точки набора пикселов в матрице M, а L1 — в качестве горизонтальной линии, проходящей через точку P1. Затем линия L1 поворачивается вокруг точки P1 до тех пор, пока не столкнется со значением fg в наборе пикселов. Полученная повернутая линия обозначается L2, выбирается точка P2 как наиболее удаленная от P1 вдоль L2; алгоритм повторяется до тех пор, пока Pn не будет равно P1. Объединение {P1, P2, ... , Pn-1} задает вершины выпуклой оболочки.
Данная оболочка содержит все пикселы со значением 1 исходной матрицы и является наименьшим выпуклым набором пикселов.
3. Выберите значение переднего фона, равное 2, и пересчитайте выпуклую оболочку.
4. Наложите бинарное изображение зернышка кукурузы с его выпуклой оболочкой, чтобы продемонстрировать пользу от оболочки при поиске контуров и пустот изображения.
5. Найдите выпуклую оболочку из белых пикселов (1) в двоичном изображении, а затем вычтите изображение из оболочки, чтобы найти дефекты оболочки. Вместо непосредственного вычитания двоичное изображение и оболочка отмасштабированы таким образом, что область вне оболочки окрашена серым цветом, изображение — черным, а дефекты оболочки — белым.
6. Отобразите изображения M, Mbin255 и Mdef одно за другим.
(corn1.bmp)
(mbin_255.bmp)
(mdef.bmp)
Пикселы вне оболочки окрашены серым цветом в M, изображение — черным Mbin55, а дефекты оболочки отображаются белым цветом в конечном изображении Mdef.