|
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
|
|
Разбить изображения на 20 ровных сектора и подсчитать количество черных пикселов в каждом из найденых секторов18.03.2015, 09:41. Показов 8476. Ответов 34
Метки нет (Все метки)
Здравствуйте. Задача заключается в следующем. Нужно разбить изображение на 20 равных частей (на картинках показано как нужно разбить). В каждой части подсчитать количество черных пикселей(какой процент черных пикселей приходится на эту область). и вывести на экран. Подскажите пожалуйста джуниору как разбить изображение таким образом. Буду очень благодарен любой помощи.
0
|
|
| 18.03.2015, 09:41 | |
|
Ответы с готовыми решениями:
34
Переназначенные сектора, нестабильные сектора и неисправимые ошибки секторов
Разбить область на сектора. Цвет нарисованной линии должен зависеть от сектора |
|
|
|
| 18.03.2015, 15:42 | |
|
Регионами, может быть? Наделать треугольных регионов, а потом выяснять для каждого пикселя изображения, в каком он регионе(PtInRegion) - и щелкать соответствующие счетчики цветов по регионам.
Громоздко, медленно, неэффективно - но самое легкое, что в голову пришло.
1
|
|
|
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
|
|
| 18.03.2015, 15:59 [ТС] | |
|
Каким способом делать НЕ уточнялось. Думаю любым .Главное чтобы можно разделить изображение на 20 частей, узнать сколько черных точек в каждой части (таким образом я найду вектор признаков). После этого нужно этот вектор признаков использовать в методе группового учета аргумента, но не об этом сейчас. Меня интересует только вектор признаков. Если регионами можно сделать - супер. Подскажите пожалуйста, где доступно о них написано. PS: а можно разбить регионами еще и на одинаковые прямоугольники?
0
|
|
|
|
|
| 18.03.2015, 16:13 | |
|
Хоть на прямоугольники, хоть на многоугольники, хоть как можно. Подробно есть в справке малокософта - Region Functions
Добавлено через 58 секунд Ну, и вот еще - https://msdn.microsoft.com/en-... s.85).aspx
1
|
|
|
place status here
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
|
||||||
| 18.03.2015, 17:15 | ||||||
|
"Разбиение без регионов":
И применить метод, аналогичный используемому в PtInRegion (на "области" разбили, осталось добавить проверку на принадлежность точки конкретной "области").
2
|
||||||
|
|
||
| 18.03.2015, 17:27 | ||
Индексировать лучи по углу поворота, мб? Потом смотреть на угол поворота прямой, построенной по проверяемой точке и центру. Тогда и рисовать лучи ни к чему в общем-то.
1
|
||
|
place status here
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
|
|
| 18.03.2015, 17:32 | |
|
Ну да, рисовать в итоге не обязательно. Линии нужны лишь для "понимания".
1
|
|
|
|
|
| 18.03.2015, 18:52 | |
|
Можно так сделать эффективнее (уменьшив кол-во проверок на номер региона):
- Разбить на регионы - В цикле проверять цвет каждой точки. Если цвет черный, то определить, к какому региону относится эта точка. Зная координаты точки с черным цветом, мы можем залить эту область с помощью FloodFill цветом, который соответствует номеру региона. А цвет последующих точек (цвет которых был изменен с помощью FloodFill) просто проверять на соответствие номеру региона.
1
|
|
|
place status here
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
|
|||||||||||
| 19.03.2015, 22:32 | |||||||||||
Сообщение было отмечено BRcr как решение
Решение
Не стал заморачиваться с условием проверки пикселей при разбиении изображения на сектора (голова не настроена думать), сделал через регионы.
Пример разбиения:
ScanLine не понадобилась (цвет пикселей не меняется).
Результат:
2
|
|||||||||||
|
place status here
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
|
|
| 19.03.2015, 22:50 | |
|
Подсчитать проценты (отношение кол-ва черных пикселей в общему числу точек в каждом регионе) - совсем уж тривиальная задача. Пусть ТС хоть что-то сам сделает.
0
|
|
|
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
|
|
| 30.03.2015, 22:11 [ТС] | |
|
Я конечно очень благодарен за ваши старания, но меня больше интересует как разбить изображение на одинаковые сектора (n - штук например), а не на одинаковые квадраты) если есть идеи, с удовольствием выслушаю профи
0
|
|
|
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
|
|
| 30.03.2015, 22:50 [ТС] | |
|
На картинке нарисовано, что в первом случае центр разбиение должно быть в верхнем левом углу, в следующем случае центр разбиения должен быть в центре картинки. Ну и в конце разбить изображение на одинаковые 20 (или н) частей. Например: входные данные - картинка, число н (на сколько частей нужно разбить) и варианты разбиения. То есть загрузил картинку, записал в едит число 20 и нажал кнопу "разбить изображение на н одинаковых частей с центром разбиение в верхнем левом углу и получить вектор признаков (типа значение черных точек с каждого полученного треугольника, который образовался при разбивке)", далее нажимаю кнопку "разбить изображение на 20 (или н) НО уже центр разбиения должен быть в центре картинки", вновь получил вектор признаков. (Сравниваем полученные значения из двух методов. Вывел на экран образованные массивы
Добавлено через 10 минут преподаватель сказал что это должно делаться как-то по углам. типа имею картинку, есть число на которое нужно разбить картинку. Разделил 360гр на число разбиения. Образовался угол. И в соответствии с этим угла нужно разбивать картинку и получать вектор признаков. Как именно это сделать он не сказал (возможно и сам не знает). Поэтому решил написать сюда, может в кто-то делал что-то подобное, поделится знаниями или кодом. Как-никак у вас больше опыта чем у меня.
1
|
|
|
place status here
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
|
|
| 31.03.2015, 12:23 | |
|
А к чему было упоминание про прямоугольники?
Пост №5 - разбиение на сектора, точка в центре. Кол-во секторов задается. Переделать под вариант, когда точка слева вверху (или где-то еще), не требует наличия IQ выше среднего. Пост №9 - разбиение на регионы с подсчетом точек. Объединяем то, что есть в этих постах, и разбиваем, как нам угодно. Вплоть до секторов с использованием регионов. За время, пока ТС отсутствовал, можно было всё это сделать, попивая пиво, ковыряясь в носу и тратя максимум полчаса времени в день. К готовому решению нужно самому учиться приходить. Тем более вся необходимая информация имеется. Если кто хочет преподнести полностью код "под ключ", услышать благодарность и успеть краем глаза заметить, как автор испаряется со скоростью, близкой к сверхзвуковой, поднимая клубы пыли, то, как говорится, "велкам".
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||
| 31.03.2015, 16:21 | ||||||
Сообщение было отмечено dexter007 как решение
Решение
Значит решение в лоб: попиксельный проход всей картинки и нахождение сектора для каждого пикселя.
Можно наверное от обратного сплясать - найти четыре (или сколько там) линии, ограничивающие сектор и перемещаться уже только среди них. Скорость возрастет в несколько раз. P.S. Точность метода оставляет желать погребения. И при абсурдно малых количествах секторов тоже ведет себя некорректно. P.P.S. Код расчленения рисунка лихо сворован у gunslinger. Не очень я там понял коэффициенты, но разбираться лень. Можно впринципе там чего-нибудь еще подшаманить тригонометрически.
P.P.P.S. Славному gunslinger посвящается: http://dl.zaycev.net/67300/1248136/marty_robbins_-_big_iron_(zaycev.net).mp3
2
|
||||||
| 31.03.2015, 18:58 | |
|
Не по теме:
Мне всегда больше как-то вот так представлялось
Действующие лица: gunslinger и ТС.:D
0
|
|
|
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
|
|
| 01.04.2015, 11:01 [ТС] | |
|
Большое спасибо. Побольше бы таких людей.) если нужна будет помощь по java ee - обращайтесь. Еще раз благодарю.
0
|
|
|
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
|
||||||
| 05.04.2015, 15:06 [ТС] | ||||||
|
еще один небольшой вопрос: насколько я понял берется текущая точка и проверяется лежит ли она между двумя образованными векторами D1 и D2. хочу переместить центр разбиение в левый верхний угол. но результат не верен
. подскажите пожалуйста в чем проблема. Код кнопки.
0
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||||
| 06.04.2015, 09:10 | ||||||||
|
То есть зачем вам, в вашем примере выше, откладывать отрезки влево и вверх? (Попробуйте в коде ниже не переносить сначала центр функцией MoveTo.) Если танцеывать дальше от варианта, предложенного gunslinger, вот так ограничьте обход:
0
|
||||||||
|
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
|
||
| 06.04.2015, 17:00 [ТС] | ||
0
|
||
| 06.04.2015, 17:00 | |
|
Помогаю со студенческими работами здесь
20
Подсчитать количество черных пикселей на Picturebox
Неисправимые ошибки секторов, нестабильные сектора Неполадки с HDD: нестабильные сектора и неисправимые ошибки секторов Запись в сектора на floppy-диске, и чтение с этих секторов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|