Пятница, 29 Марта 2024, 14:30

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Обрезка изображения по эталону
Обрезка изображения по эталону
masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 11:47 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Здравствуйте! Возник вопрос связанный с обрезкой изображений, решил спросить тут)
Есть изображение с произвольным фоном и круглый объект в какой-то части этого изображения (не обязательно в середине) необходимо вырезать объект с фона. Объект может быть только круглым! Я предпологаю, что необходимо создать некий эталон формы и потом производить сравнение. Как реализовать данную задачу? Заранее спасибо!


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
НохчиДата: Воскресенье, 15 Апреля 2012, 12:22 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Не понимаю вопроса, битмапы-то в итоге все-равно исключительно квадратными могут быть.

Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Воскресенье, 15 Апреля 2012, 12:22
masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 12:42 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Да, но мне нужен квадрат с белым, исключительно белым фоном, на котором будет данный круглый объект!

Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
НохчиДата: Воскресенье, 15 Апреля 2012, 12:49 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Понятно, вырезать нужную окружность не проблема, но для этого цвет окружности должен быть уникальным, то есть на том же битмапе не должно быть других участков с точно таким же цветом. Далее все тривиально: проходишься в цикле по всем пикселям и либо пиксели с нужным цветом копируешь на другой битмап, либо все пиксели с ненужном цветом делаешь белыми.

Многие вопросы по Windows отпадут, если посмотреть тут
masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 13:08 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Ну теоретически у меня были подобные мысли, но практически я этого пока сделать не могу. Тем более в моем случае фон может быть серым, а значит совпасть с нужным объектом.
Нельзя ли как-то выделить спектр картинки, потом сравнить спектр с моим эталоном и подобным способом определить положение объекта?

Добавлено (15.04.2012, 13:08)
---------------------------------------------
Под спектром я имею ввиду спектрограмму))


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
НохчиДата: Воскресенье, 15 Апреля 2012, 13:13 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Quote (masb8ly-GC)
но практически я этого пока сделать не могу.

У тебя же есть доступ к битмап? В чем проблема? Проходишься по всему массиву от начала до конца, сравниваешь каждый пиксель с цветом твоего объекта, если не равно, пиксель делаешь белым
Code

for(int x = 0; x<img_width; x++)
     for(int y = 0; y<img_height; y++)
        {
   if(bitmap[x][y] != etalon_color)
    bitmap[x][y] = 0xFFFFFFFF;
        }

0xFFFFFFFF - белый цвет.
Quote (masb8ly-GC)
совпасть с нужным объектом.

В таком случае задача не решаема.


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Воскресенье, 15 Апреля 2012, 13:15
masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 13:16 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Объект является металлическим, а значит имеет невероятное количество цветов.
А решение через спектрограммы? Возможно ли? Возможно стоит прибегнуть к нейронным сетям?


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
НохчиДата: Воскресенье, 15 Апреля 2012, 13:20 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Quote (masb8ly-GC)
Объект является металлическим, а значит имеет невероятное количество цветов.

Тогда нужно отталкиваться от цвета фона, но опять-таки, если цвет фона и цвет целевого объекта совпадают, наступает эпичный фейл.
Quote (masb8ly-GC)
А решение через спектрограммы? Возможно ли? Возможно стоит прибегнуть к нейронным сетям?

Модные слова? Хз, никогда не сталкивался с ними.


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Воскресенье, 15 Апреля 2012, 13:22
masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 13:23 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Слова не модные, но другого решения я пока не вижу.
Всеравно спасибо за помощь!


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
GECKДата: Воскресенье, 15 Апреля 2012, 13:29 | Сообщение # 10
заслуженный участник
Сейчас нет на сайте
Quote (Нохчи)
В таком случае задача не решаема.

Не стоит быть столь пессимистичным smile

masb8ly-GC, приведи пример того, что ты хочешь получить(т.е. исходную картинку и желаемый результат).


Всё гениальное просто. И хреново работает.
НохчиДата: Воскресенье, 15 Апреля 2012, 13:31 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Quote (GECK)
Не стоит быть столь пессимистичным

Если объект и фон совпадают по цвету, то это сплошная заливка получается. Как(и главной зачем?!!!) оттуда что-то вырезать непонятно.


Многие вопросы по Windows отпадут, если посмотреть тут
VinchensooДата: Воскресенье, 15 Апреля 2012, 13:54 | Сообщение # 12
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Координаты центра круга и радиуса не известны?

masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 18:18 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Получить хочу приблизительно такое:

Под спойлером превью, размер полной картинки 800х1200
Quote (Vinchensoo)
Координаты центра круга и радиуса не известны?

Нет! Не известно абсолютно ничего.

Есть еще вот какой вариант:
С помощью метода Лапласа сделать оконтуривание и далее по контуру вырезать изображение. Вариант ли?
P.S. монета первое, что попалось под руку)

Добавлено (15.04.2012, 18:18)
---------------------------------------------
Вот пример работы метода Лапласа (матрица подобрана на скорую руку).


Я думаю делать выделение по данному изображению, а потом обрезать на первом


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games


Сообщение отредактировал masb8ly-GC - Воскресенье, 15 Апреля 2012, 18:10
karuyДата: Воскресенье, 15 Апреля 2012, 18:50 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
Задача не тривиальная и очень размытая, в приложении что ты навел в пример ты обратил цвета и ничего это тебе не дало. Для программы нужно более четкие условия, чем вырезать изображения. Первое что приходить в голову, это фильтрация по цвету, всмысле объект темнее, фон светлее. Если идти таким путем, то монетку из той картинки вырезать не проблема, хотя сначала нужно набрать программу, а потом говорить ГОП.
masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 18:55 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
Quote (karuy)
в приложении что ты навел в пример ты обратил цвета и ничего это тебе не дало.

Это было не обычное инвертирование цветов! Данное приложение применяет матрицу третьего порядка для редактирования изображения. С помощью редактирования матрицы, а также смещения и фактора деления, можно получить любой эффект. Главное знать, что получать и для чего это нужно.
Просто в данном изображении отлично видны крайние точки и можно было бы их определить, а далее по какой-то математической формуле создать выделение по окружности!


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
karuyДата: Воскресенье, 15 Апреля 2012, 18:55 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
Кстати обьект, как и фон могут быть произволььного цвета?
masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 18:59 | Сообщение # 17
постоянный участник
Сейчас нет на сайте
Да объект и фон могут быть произвольного цвета! Точнее не совсем так! Фон может быть любым, а вот обьект может быть всего нескольких цветов:
1. Желтый (латунь)
2. Серый (алюминий, сталь, нейзильбер)
3. Коричневый и оранжевый (медь).


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
НохчиДата: Воскресенье, 15 Апреля 2012, 19:03 | Сообщение # 18
заслуженный участник
Сейчас нет на сайте
masb8ly-GC, тебе нужно добиться того, чтобы фон не был этих трех цветов.

Многие вопросы по Windows отпадут, если посмотреть тут
masb8ly-GCДата: Воскресенье, 15 Апреля 2012, 19:04 | Сообщение # 19
постоянный участник
Сейчас нет на сайте
Элементарно! Это реализовать будет легко. Поскольку отличие в цветах будет всеравно очень различимым, а значит я смогу выделить границы

Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
НохчиДата: Воскресенье, 15 Апреля 2012, 19:08 | Сообщение # 20
заслуженный участник
Сейчас нет на сайте
Тогда о чем вообще речь? С чем трудности?

Многие вопросы по Windows отпадут, если посмотреть тут
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Обрезка изображения по эталону
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг