Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 18

Выделение прозрачного многоугольника на изображении

24.07.2017, 09:57. Показов 1064. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо реализовать поиск наибольшего (либо заданного размера) прозрачного прямоугольного поля на картинке. Суть в том, чтобы уметь обнаруживать проблемные места на изображении, которые используют много пустого пространства и как следствие - едят много памяти. Вот только оптимального ничего в голову не приходит
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2017, 09:57
Ответы с готовыми решениями:

Выделение области на изображении
Здравствуйте! У меня в приложении есть PictureBox. Мне нужно организовать выделение фрагмента изображения в нем мышью. Идей много, но как...

Выделение пикселя на изображении QT
Добрый день. Возможно ли встроенными функциями выделить на изображении самый светлый участок и узнать его координаты?

Выделение областей на изображении
Добрый день форумчане. Нужно на изображении выделить сам объект и отдельно необходимый мне фон. У кого есть какие соображения?

8
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
24.07.2017, 11:31
Не лучше поискать формат хранения картинок поддерживающий фон? Тогда экономия будет и криволинейных пустых участков +не нужен велик.

Например если по адресу XY RGB=0 то записывать уникальный символ означающий RGB=0
Т.е. 1 скаляр вместо 3.
Или еще круче: спец символ обозначающий начало строки пустых пикселей(фон).
Тогда вместо например 100 пикселей записана команда пустые пиксели в этой строке от и до. Наверняка подобное давно есть.
В гугле: Формат изображений поддерживающий фон
Говорит GIF и PNG
0
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 18
24.07.2017, 11:46  [ТС]
Я работаю с png форматом. у картинок есть прозрачные области. Определить прозрачные пиксели легко, сложнее выделить группу этих пикселей в замкнутые области. Мне нужно написать утилиту, если это прозрачная область в которую можно уместить прямоугольник с определённым размером или больше. Мне нужно только определить и выдать сообщение об этом, хотя желательно и выделить её.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
24.07.2017, 12:14
Изначальная цель что? Зачем такие области? Может что то есть готовое в OpenCV.
Прямоугольник может быть повернут?
Пустоты выпуклые многоугольники? Их всегда одна область или ноль?

Вот такой велик:
Скопировать фотку в массив0.
В массив0 оставить только прозрачные пиксели. Закрасить их черным. Скопировать в массив1. В массив1 размыть фильтром гаусса и найти максимум темные пиксели. Так найти кандидаты на центры прямоугольников. В массив0 смотреть какие прямоугольники можно вписать. Например от текущего центра прямоугольника по строкам и столбцам проверять все ли черные? Так постепенно будет растянут прямоугольник максимального размера.Так сделать всем кандидатам на центры прямоугольников и выбрать больший.

Сейчас скажете ничерта непонятно =)).
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
24.07.2017, 19:20
вопрос с максимальным прямоугольником тоже не так прост, как кажется
в одно и то же место можно всадить длинный и узкий, а так же почти квадратный, по площади они будут одинаковыми
т.е. вопрос не решается единственным образом. комбинаций тысячи. особенно если картинка сильно прозрачная
покрытие прямоугольниками - дурацкая идея, чесслово
0
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 18
25.07.2017, 01:56  [ТС]
В общем есть конвертер из формата фотошопа в специальный формат. Он экспортирует слои в пнг. И есть встречаются, так сказать, не оптимальные слои, где существуют прозрачные зоны больше трети размеров изображения, а это может вылиться в кошмарный расход памяти. Моя задача обнаружить эти зоны и выдать варнинг. Этой программой будут пользоваться художники как я понимаю. В общем вот такую задачу мне поставили.

Прямоугольник поворачиваться не должен и зона может быть любой, не обязательно выпуклой.
Что касается максимального прямоугольника, достаточно обнаружить хотя бы один вариант удовлетворяющий условию, этого вполне хватит.

С размытием вроде понял, попробую этот вариант.

Мне ещё подсказывали копать в сторону алгоритма "лес непересекающихся множеств"
0
Айлурофил
 Аватар для Massaraksh7
514 / 447 / 112
Регистрация: 27.05.2017
Сообщений: 2,697
Записей в блоге: 5
25.07.2017, 02:41
Ну вот какой из них по площади больше? А в какой можно вписать прямоугольник большей площади? По-моему, прямоугольник здесь не пришей кобыле хвост.
Миниатюры
Выделение прозрачного многоугольника на изображении  
0
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 18
25.07.2017, 07:30  [ТС]
Задача меняется, нужно, чтобы площадь найденного прямоугольника была не менее трети площади картинки. Нашёл алгоритм на С и Java https://stackoverflow.com/ques... le-problem Переписал с Java варианта, он очень плохо работает. Изображение полой залазит на выделенную область. Лучшая площадь считается неправильно и почти всегда гораздо больше настоящей. Пытаюсь понять разницу между С и Java реализацией, в чём там ошибка.
P.S. Гауссом довольно сложно реализовать

Добавлено через 1 час 50 минут
Прошу прощение, алгоритм рабочий, я просто неправильно отрисовывал) Тему можно закрывать
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
25.07.2017, 08:52
Бинаризация
Гаусс
Порог
Фейк в фотошопе =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2017, 08:52
Помогаю со студенческими работами здесь

Выделение объектов на изображении
Столкнулся с проблемой при составлении алгоритма выделения объектов на шаблоне. На шаблоне 3 квадрата черный, белый, серый. С помощью...

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

Поиск цифр на изображении и их выделение
Всем привет! Возникла потребность в написании простенькой программы по поиску чисел на изображении. Однако, уровень моих знаний в...

Выделение контура объекта на изображении
Здравствуйте, подскажите, пожалуйста, как найти контур объекта на картинке.

Выделение границ перехода на изображении
Доброго времени суток. Прошу помощи в обработке изображения. Суть в том, что на представленных ниже фотографиях мне надо выделить...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru