Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
18 / 13 / 0
Регистрация: 16.09.2014
Сообщений: 302
1

Авто определение границ рисунков

13.06.2019, 07:57. Показов 3756. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Большой рисунок состоит из нескольких (многих) прямоугольных рисунков, разделённых между собой промежутками-"рамками" какого-то одного цвета
Как можно организовать автоматическое определение программой координат этих отдельных рисунков, "скормив" проге цвет "рамок"? Какой должна быть "логика", алгоритм действий? Как решать проблему jpg? Ведь в bmp чётко один цвет, а в jpg цвет рамки размывается в разные оттенки
Миниатюры
Авто определение границ рисунков  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2019, 07:57
Ответы с готовыми решениями:

Определение границ
2.определение границ y=x5-x3-x+2 х

Определение границ капчи
Добрый вечер Я пыталась написать программу, которая бы рисовала яркость пикселей Чтобы по ним...

Определение границ цифр
Здравствуйте, подскажите, как можно определить границы цифр, по которым можно резать? Я пытался...

Определение границ нарисованного объекта
Задача такова: определить границы нарисованного объекта. Пытаюсь это сделать с помощью определение...

26
18 / 13 / 0
Регистрация: 16.09.2014
Сообщений: 302
15.06.2019, 22:49  [ТС] 21
Author24 — интернет-сервис помощи студентам
Не, естесственно не любые. Только те, которые имеют рамки и не пересекаются. Во-всяком случае я прогнал все эти рисунки через прогу, которую выложил выше - результаты такие, что можно продолжать долбить эту тему с надеждой на положительный исход. В принципе определение контуров даже с 50% надёжностью я считаю удовлетворительным результатом, поскольку это не основная функция проги, а так, примочка вспомогательная/понт.

ОЧЕНЬ интересен ваш подход. Не поделитесь или словесным описанием принципа или даже кодом?
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
16.06.2019, 06:22 22
Цитата Сообщение от giaber Посмотреть сообщение
словесным описанием принципа или даже кодом?
На счет кода, я быстренько набросал в PureBasic, он как то побогаче встроенными библиотеками для работы с изображениями. Если есть интерес, то могу с вами поделиться (но там совсем не похоже на VB6).

А принцип прост - перевёл изображение в черно-белый вид с выделением краёв, что-то типа эффекта Emboss.
Обвел весь рисунок черной рамкой по краю. Далее попиксельно искал непрерывные горизонтальные линии.
Двигаюсь сверху по ширине и складываю цвет пикселей, если в итоге сумма 0, то это сплошная горизонтальная черная линия, если нет, то спускаюсь на один пиксель вниз и повторяю.
Потом двигаюсь по этой найденной линии, проверяя ответвления, опять же двигаюсь, но уже складывая вертикальные пиксели. Если сумма их 0, то в точке пересечения с горизонтальной линией рисую зелёную точку. Попутно отмечая, линия вниз или вверх.
Так можно быстро найти все углы. Скомпилированная прога на этом изображении находит углы быстрее чем за секунду.
0
18 / 13 / 0
Регистрация: 16.09.2014
Сообщений: 302
16.06.2019, 07:35  [ТС] 23
Ваш метод- первое, что пришло мне в голову, когда я начал думать об этой моей проблеме. Но я сразу же обломался - при переводе в чёрно белое у меня из этого рисунка получается почти сплошное чёрное поле! Или имеется ввиду Grayscale? Оттенки серого? Но тогда сумма 0 не может получаться и опять вопрос - как определять принадлежат ли пиксели рисунку или рамке?

Не, конечно есть и такое соображение - рамка всегда одного цвета и даже учитывая что jpg "портит" одноцветность пикселей, если идти по горизонтальному ряду (или во вертикальному) разница между пикселями линии рамки будет наименьшей по сравнению с любой другой линией. Но здесь есть затык, который я пока не соображу как преодолеть. Если в случае реальной одноцветности пикселей (чёрный в вашем варианте) появление пикселя <>0 указывает на конечную точку непрерывной линии, то в случае нечёткого цвета как понять что непрерывный ряд закончился. Опять надо вводить усложнения типа задавать пределы отклонения среднего значения и тому подобное, чего как раз ОЧЕНЬ хочется избежать.

Короче, я продолжу реализовывать такой подход - тем более что ваша реализация показала, что результаты очень даже ничего.

Прошу вас прояснить тему перевода в чёрно-белое
0
18 / 13 / 0
Регистрация: 16.09.2014
Сообщений: 302
16.06.2019, 11:36  [ТС] 24
Пытаюсь сделать после 5 проходов по Helland Cubic и перевода в монохром определение линий. Вроде получается,но рисуются лишние линии. 3 часа сижу - не могу найти ошибку. Помогите правильно организовать цикл прохода по пикселям горизонтальных рядов и определения стартовых координат и длины непрерывной линии
На рисунке слева - то, как получается, справа - какие линии должны быть на самом деле
Миниатюры
Авто определение границ рисунков  
Вложения
Тип файла: zip My Rects Detection.zip (15.1 Кб, 4 просмотров)
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
16.06.2019, 14:40 25
Цитата Сообщение от giaber Посмотреть сообщение
прояснить тему перевода в чёрно-белое
Попробую перевести в vb6, покажу что вышло
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
16.06.2019, 17:31 26
Вот что вышло
Авто определение границ рисунков

Без оптимизации работает очень медленно, там эти PSet и Point в цикле полный тормоз.
Но принцип есть, а оптимизация дело наживное.
Обратите внимание, есть второй режим, в комментах описан, чуть быстрее и тоньше работает.
Вложения
Тип файла: zip vb6ЧБ.zip (63.7 Кб, 7 просмотров)
0
103 / 63 / 10
Регистрация: 13.02.2017
Сообщений: 178
17.06.2019, 22:07 27
Не мог не запостить свой поток сознания.
Думаю, если границы прямоугольников явно не выделены, то и заниматься этим не смысла.
Вложения
Тип файла: rar FindColorRects.rar (37.1 Кб, 7 просмотров)
0
17.06.2019, 22:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2019, 22:07
Помогаю со студенческими работами здесь

Определение границ типов данных
Задача такова. Требуется определить максимальные границы для основных типов данных, т.е. int,...

Определение границ заливки изображения
Доброго времени суток! Подскажите, как можно определить границы рисунка для последующей работы с...

Авто определение региона
Сайт 10 месяцев находился у российского хостера, атвоопределением ему назначен регион Россия (так...

Описать базовый класс автомобиль и от него наследуются классы: грузовые авто, уборочные авто, спортивные авто
Всем привет!:) хочу спросить кто нибудь писал программы с наследованием на С++? Интересны задачи...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru