Pull to refresh

Точное выделение контуров на изображениях

Image processing *
Sandbox
Хочу описать, один из нелинейных алгоритмов выделения контуров на изображениях.

Классика

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

А если так не делать?


А если так не делать?

Но если углубится, в нашем анализе, и предположить еще более глубокое дробление изображения, а именно «расшить» его на бинарные слои.
в место одной матрицы значений 0..255 рассмотрим 8 матриц, того же размера, но со значениями 0..1

А теперь применим к полученным бинарным матрицам свертку с…

image

Без коэфициентов. Просто выполним функцию булевской алгебры. Ведь входные данные — это бинарные значения. [1]

Разоблачение

Откуда взялась эта булевская функция?
  • скажем, что контур найден в некотором пикселе бинарного изображения, если значение яркости этого писеля отличается от значения яркости хотя бы одного из окружающих его пикселей в окне n x n. Случай изолированного пикселя исключается из рассмотрения требованием: значение рассматриваемового пикселя должно совпадать с значением хотя бы одного из окружающих пикселей;
  • контур по восходящей (от 0 к 1, где 1 это значение анализируемого пикселя), контур по нисходящей (от 1 к 0, где 0 значение анализируемого пикселя) не совпадают;
  • из второго постулата получаем, что есть три варианта выделения контуров а) отдельные контуры по восходящей; б) отдельные контуры по нисходящей; в) объединенное выделение контров по восходящей и нисходящей изменениям яркости.

наглядные результаты:
image
  • исходное (элетронный микроскоп)
  • контура по нашей формуле
  • поднятый контраст по нашему результату


для сравнения:
image
  • контура по линейному оператору Собелю
  • контура по материалам [2]
  • контура по материалам [3]


и еще один «живой» пример
image

варианты
image
«по восходящей»

image
«по нисходящей»

[1] Aizenberg I. and Butakoff C., “Image Processing Using Cellular Neural Networks Based on Multi-Valued and Universal Binary Neurons”, Journal of VLSI Signal Processing Systems for Signal, Image and Video Technology, Vol. 32, 2002, pp. 169-188.
[2] X.Z.Sun, and A.N.Venetsanopoulos “Adaptive Schemes for Noise Filtering and Edge Detection by us
Statistics”, IEEE Transactions on Circuits and Systems, vol. CAS-35, 1988, pp. 57-69
[3] R.M.Haralick “Statistics and Structural Approach to Texture”, Proceedings IEEE, vol. 67, No 5, 1979, pp. 786-804
Tags:
Hubs:
Total votes 55: ↑52 and ↓3 +49
Views 14K
Comments Comments 14