[FIXED] Кондрашова Виктория. Технология SEQ. Маркировка компонентов бинарного изображения. Вариант 29.#345
Open
neishis wants to merge 1 commit intolearning-process:masterfrom
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #345 +/- ##
==========================================
+ Coverage 78.78% 79.15% +0.36%
==========================================
Files 248 267 +19
Lines 8405 9325 +920
Branches 3598 3963 +365
==========================================
+ Hits 6622 7381 +759
- Misses 1257 1374 +117
- Partials 526 570 +44 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Описание
Реализован алгоритм маркировки связных компонент на бинарном изображении. Изображение представлено как одномерный массив uint8_t, где 0 — объект (чёрный пиксель), 1 — фон. Используется 4-связность (соседи по горизонтали и вертикали).
Алгоритм: для каждого непомеченного пикселя объекта запускается алгоритм, который обходит всю связную компоненту и присваивает ей уникальную метку. Результат — количество компонент и 2D-карта меток, где каждый пиксель объекта имеет номер своей компоненты (1, 2, 3, ...), а фоновые пиксели имеют метку 0.
Сложность: O(W·H) по времени и памяти, где W×H — размеры изображения. Каждый пиксель посещается ровно один раз.
Входные данные:
ImageData: бинарное изображение (вектор uint8_t), ширина и высота
Выходные данные:
Result: количество компонент (count) и 2D-матрица меток (labels)
Тестирование:
4 функциональных теста: пустое изображение (только фон), одна сплошная компонента, 4 изолированных пикселя, две раздельные области
6 перформанс-тестов на изображениях 512×512: сплошной фон, сплошной объект, шахматная доска (максимум компонент), разреженные точки, горизонтальные полосы, блоки 32×32
Чек-лист
<фамилия>_<первая_буква_имени>_<короткое_название_задачи>clang-formatлокально в моем форке (нет ошибок форматирования)clang-tidyлокально в моем форке (нет предупреждений/ошибок)(например,
nesterov_a_vector_sum), а не вmasterдостоверными