Обрезка изображения по эталону
|
masb8ly-GC | Дата: Воскресенье, 15 Апреля 2012, 11:47 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Здравствуйте! Возник вопрос связанный с обрезкой изображений, решил спросить тут) Есть изображение с произвольным фоном и круглый объект в какой-то части этого изображения (не обязательно в середине) необходимо вырезать объект с фона. Объект может быть только круглым! Я предпологаю, что необходимо создать некий эталон формы и потом производить сравнение. Как реализовать данную задачу? Заранее спасибо!
Backend Developer ESIS Client Side Developer Room8Studio Technical Leader Lucid Reality Labs Chief Technology Officer The Intruders
|
|
| | |
Нохчи | Дата: Воскресенье, 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
|
|
| | |
Нохчи | Дата: Воскресенье, 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
|
|
| | |
Нохчи | Дата: Воскресенье, 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
|
|
| | |
Нохчи | Дата: Воскресенье, 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
|
|
| | |
GECK | Дата: Воскресенье, 15 Апреля 2012, 13:29 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| Quote (Нохчи) В таком случае задача не решаема. Не стоит быть столь пессимистичным
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
Сообщение отредактировал 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
|
|
| | |
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
|
|
| | |
Нохчи | Дата: Воскресенье, 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
|
|
| | |
Нохчи | Дата: Воскресенье, 15 Апреля 2012, 19:08 | Сообщение # 20 |
заслуженный участник
Сейчас нет на сайте
| Тогда о чем вообще речь? С чем трудности?
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
|