Задача состоит в следующем. У нас есть изображение. Есть возможность сохранить от 1 до N даблов, неким образом описываюших его. Необходимо отфильтровать поток изображений (имеющих порой другие размеры), которые "совсем не похожи на исходное". Иными словами "нечеткая селеция". Алогритм должен быть довольно простым и универсальным (не надо предлагать тренировки, ХММ и т.п.)
Заранее благодарен за идеи и активность в обсуждении,
Доктор
Re: Хелп! Изображения через функционалы. Раскинем мозгами! :
Здравствуйте, DoctorM, Вы писали:
DM>Всех приветствую,
DM>Задача состоит в следующем. У нас есть изображение. Есть возможность сохранить от 1 до N даблов, неким образом описываюших его. Необходимо отфильтровать поток изображений (имеющих порой другие размеры), которые "совсем не похожи на исходное". Иными словами "нечеткая селеция". Алогритм должен быть довольно простым и универсальным (не надо предлагать тренировки, ХММ и т.п.)
DM>Заранее благодарен за идеи и активность в обсуждении, DM>Доктор
Не совсем понятно чего же ты хочешь. Что именно должны описывать эти даблы и для чего они будут использоваться.
Чем более подробно изложишь мысль, тем более активно будут реагировать на поставленную задачу.
Сергей.
Re[2]: Хелп! Изображения через функционалы. Раскинем мозгами
Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>Здравствуйте, DoctorM, Вы писали:
DM>>Всех приветствую,
DM>>Задача состоит в следующем. У нас есть изображение. Есть возможность сохранить от 1 до N даблов, неким образом описываюших его. Необходимо отфильтровать поток изображений (имеющих порой другие размеры), которые "совсем не похожи на исходное". Иными словами "нечеткая селеция". Алогритм должен быть довольно простым и универсальным (не надо предлагать тренировки, ХММ и т.п.)
DM>>Заранее благодарен за идеи и активность в обсуждении, DM>>Доктор
SAS>Не совсем понятно чего же ты хочешь. Что именно должны описывать эти даблы и для чего они будут использоваться. SAS>Чем более подробно изложишь мысль, тем более активно будут реагировать на поставленную задачу.
У меня есть два приложения. Первое берет картинку (обычно не более 50x50 пикселов) и может вычислить ряд параметров на ней. Пусть эти параметры записываются в файл.
Затем второе приложение считывает эти параметры и применяет АНАЛОГИЧНЫЕ вычисления к потоку картинок, а затем производит фильтрацию по значениям параметров (нечетко сравнивая их с эталонными).
Необходимы алгоритмы для вычисления указанных параметров, которые довольно хорошо производят фильтрацию. Основная задача — существенно сократить число гипотез.
Картинки могут различаться, но незначительно. :-) К примеру, иконки с небольшими искажениями, изменяющаяся цветовая гамма (при почти сохранившейся структуре) и т.п.
Если fuzzy logic осталась, то готов ответить на уточняющие вопросы.
Удачи и жду помощи,
Доктор
Re[3]: Хелп! Изображения через функционалы. Раскинем мозгами
Похожую вещь делают программы анализирующие отпечатки пальцев, сетчатку глаз и т.п. Функционалы эти — на самом деле инварианты задачи (т.е. величины не меняющиеся при изменениях картинки не меняющих некоего важного смысла). Зная задачу сказать какие у нее инварианты не просто, а если задача неизвестна — то абсолютно невозможно
Кр-ть — с.т.
Re[3]: Хелп! Изображения через функционалы. Раскинем мозгами
Какого сорта фильтрацию ты хочешь затеять? Может быть есть уже проверенные варианты по конкретной нужде.
Сравнивать изображения по нечеткой логике? Здесь можно воспользоваться вейвлетами — хошь "даблы", хошь целые.
Почитай про вейвлеты, мне кажеться тебе это поможет. Материалов в интернете предостаточно.
Удачи.
Сергей.
Re[4]: Хелп! Изображения через функционалы. Раскинем мозгами
Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>Здравствуйте, DoctorM, Вы писали:
SAS>[skipped]
SAS>Какого сорта фильтрацию ты хочешь затеять? Может быть есть уже проверенные варианты по конкретной нужде. SAS>Сравнивать изображения по нечеткой логике? Здесь можно воспользоваться вейвлетами — хошь "даблы", хошь целые. SAS>Почитай про вейвлеты, мне кажеться тебе это поможет. Материалов в интернете предостаточно.
SAS>Удачи.
Такие вещи я знаю, но требуется нечто простое. К примеру, рассмотрим одну из иконок виндов и сравним ее с другими. Как отфильтровать большинство "ерудны" для нашего случая. А теперь возьмем другую иконку и для нее усе сделаем. А если мы захватили иконку с небольшим куском экрана? Короче, необходима "хэш-функция" с основными условиями, что "близкие значения" соответствую "близким картинкам". Усредненая яркость, к примеру, довольно хилый способ. Что-то есть получше, однозначно. Мне необходима ПРОСТАЯ фильтрация, так как я имею ряд дополнительных условий, которые помогут мне найти верный вариант из числа оставшихся.
Сложность не всегда оправдана,
Доктор
Re[5]: Хелп! Изображения через функционалы. Раскинем мозгами
Здравствуйте, DoctorM, Вы писали:
DM>Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>>Здравствуйте, DoctorM, Вы писали:
SAS>>[skipped]
SAS>>Какого сорта фильтрацию ты хочешь затеять? Может быть есть уже проверенные варианты по конкретной нужде. SAS>>Сравнивать изображения по нечеткой логике? Здесь можно воспользоваться вейвлетами — хошь "даблы", хошь целые. SAS>>Почитай про вейвлеты, мне кажеться тебе это поможет. Материалов в интернете предостаточно.
SAS>>Удачи.
DM>Такие вещи я знаю, но требуется нечто простое. К примеру, рассмотрим одну из иконок виндов и сравним ее с другими. Как отфильтровать большинство "ерудны" для нашего случая. А теперь возьмем другую иконку и для нее усе сделаем. А если мы захватили иконку с небольшим куском экрана? Короче, необходима "хэш-функция" с основными условиями, что "близкие значения" соответствую "близким картинкам". Усредненая яркость, к примеру, довольно хилый способ. Что-то есть получше, однозначно. Мне необходима ПРОСТАЯ фильтрация, так как я имею ряд дополнительных условий, которые помогут мне найти верный вариант из числа оставшихся.
DM>Сложность не всегда оправдана, DM>Доктор
Для твоего случая вейвлет не так уж и сложен — берешь верхний слой преобразованного изображения (что-нить типа 16х16 или типа того) и сохраняешь, а потом сравниваешь с другими.
Можно взять самый простой вейвлет, который считаеться на целых числах и двух пальцах — разнообразие вейвлетов просто огромно, так что выбери тот, который не кажеться тебе сложным и пользуй. Поскольку я не понаслышке знаком с обработкой изображений, то скажу тебе по секрету — сравнить два изображения (даже 50х50) парой-тройкой чисел (пусть даже даблов) со скольконибудь приемлимым качеством не представляеться возможным, так что советую изначально не обольщаться по поводу того, что вдруг к тебе на мозг прийдет просто гениальная идея как их сравнить. Область обработки изображений довольно уже сильно развилась в последнее время, чтобы мыслить так наивно. Ничего личного естественно, просто совет.
И еще — "Мне необходима ПРОСТАЯ фильтрация, так как я имею ряд дополнительных условий, которые помогут мне найти верный вариант из числа оставшихся."
ты значит имеешь, а мы должны догадываться... хех... как ты представляешь себе оптимальное решение задачи в частичных условиях?
С уважением.
Сергей.
Re[6]: Хелп! Изображения через функционалы. Раскинем мозгами
Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>Здравствуйте, DoctorM, Вы писали:
DM>>Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>>>Здравствуйте, DoctorM, Вы писали:
SAS>>>[skipped]
SAS>>>Какого сорта фильтрацию ты хочешь затеять? Может быть есть уже проверенные варианты по конкретной нужде. SAS>>>Сравнивать изображения по нечеткой логике? Здесь можно воспользоваться вейвлетами — хошь "даблы", хошь целые. SAS>>>Почитай про вейвлеты, мне кажеться тебе это поможет. Материалов в интернете предостаточно.
SAS>>>Удачи.
DM>>Такие вещи я знаю, но требуется нечто простое. К примеру, рассмотрим одну из иконок виндов и сравним ее с другими. Как отфильтровать большинство "ерудны" для нашего случая. А теперь возьмем другую иконку и для нее усе сделаем. А если мы захватили иконку с небольшим куском экрана? Короче, необходима "хэш-функция" с основными условиями, что "близкие значения" соответствую "близким картинкам". Усредненая яркость, к примеру, довольно хилый способ. Что-то есть получше, однозначно. Мне необходима ПРОСТАЯ фильтрация, так как я имею ряд дополнительных условий, которые помогут мне найти верный вариант из числа оставшихся.
DM>>Сложность не всегда оправдана, DM>>Доктор
SAS>Для твоего случая вейвлет не так уж и сложен — берешь верхний слой преобразованного изображения (что-нить типа 16х16 или типа того) и сохраняешь, а потом сравниваешь с другими. SAS>Можно взять самый простой вейвлет, который считаеться на целых числах и двух пальцах — разнообразие вейвлетов просто огромно, так что выбери тот, который не кажеться тебе сложным и пользуй. Поскольку я не понаслышке знаком с обработкой изображений, то скажу тебе по секрету — сравнить два изображения (даже 50х50) парой-тройкой чисел (пусть даже даблов) со скольконибудь приемлимым качеством не представляеться возможным, так что советую изначально не обольщаться по поводу того, что вдруг к тебе на мозг прийдет просто гениальная идея как их сравнить. Область обработки изображений довольно уже сильно развилась в последнее время, чтобы мыслить так наивно. Ничего личного естественно, просто совет.
SAS>И еще — SAS>"Мне необходима ПРОСТАЯ фильтрация, так как я имею ряд дополнительных условий, которые помогут мне найти верный вариант из числа оставшихся." SAS>ты значит имеешь, а мы должны догадываться... хех... как ты представляешь себе оптимальное решение задачи в частичных условиях?
SAS>С уважением.
просто у меня есть объекты, одним из "свойств" которых является их графическое представление. Мне необходимо отфильтровать лишь малую часть совсем непохожих, а остальное я отфильтрую по другим свойтвам. У меня есть ряд имплементаций, но я хотел собрать feedback, может есть что-то интересное и простое, так как, повторюсь, сложность не всегда оправдана.
Касательно dsp, то спасибо за совет. Опыт, это здорово, это я как Доктор, у которого аспиранты даже за рубежом были, говорю. :))
Здравствуйте, DoctorM, Вы писали:
DM>просто у меня есть объекты, одним из "свойств" которых является их графическое представление. Мне необходимо отфильтровать лишь малую часть совсем непохожих, а остальное я отфильтрую по другим свойтвам. У меня есть ряд имплементаций, но я хотел собрать feedback, может есть что-то интересное и простое, так как, повторюсь, сложность не всегда оправдана.
DM>Касательно dsp, то спасибо за совет. Опыт, это здорово, это я как Доктор, у которого аспиранты даже за рубежом были, говорю.
DM>Жду комментсов, DM>Док
Вот это уже ближе к телу — т.е. тебе надо отсеивать совсем непохожие на исходный экземпляр изображения — для этих целей ест-но подойдут всяческие усредненные яркости, дисперсии, возможно координаты центра массы , можно посчитать некоторую "энергию" изображения. Но повторюсь (вруг ты все-таки оценишь простоту) — вейвлет вот такого вида даст тебе сразу несколько характеристик изображения (по-моему это Хаар, а может я его несколько утрирую, но все равно):
в результате чего в верхней левой части изображения ты получишь даунсампленный вариант исходного изображения (по которому можно к примеру быстро посчитать средную яркость и кол-во крупных объектов), а в остальных частях получишь нечто вроде энергии изображения (на самом деле если просуммировать квадраты (можно и модули конечно для скорости) оставшихся частей, то получишь точно энергию). На мой взгляд это довольно просто и эффективно.
Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>Здравствуйте, DoctorM, Вы писали:
DM>>просто у меня есть объекты, одним из "свойств" которых является их графическое представление. Мне необходимо отфильтровать лишь малую часть совсем непохожих, а остальное я отфильтрую по другим свойтвам. У меня есть ряд имплементаций, но я хотел собрать feedback, может есть что-то интересное и простое, так как, повторюсь, сложность не всегда оправдана.
DM>>Касательно dsp, то спасибо за совет. Опыт, это здорово, это я как Доктор, у которого аспиранты даже за рубежом были, говорю. :))
DM>>Жду комментсов, DM>>Док
SAS>Вот это уже ближе к телу — т.е. тебе надо отсеивать совсем непохожие на исходный экземпляр изображения — для этих целей ест-но подойдут всяческие усредненные яркости, дисперсии, возможно координаты центра массы :), можно посчитать некоторую "энергию" изображения. Но повторюсь (вруг ты все-таки оценишь простоту) — вейвлет вот такого вида даст тебе сразу несколько характеристик изображения (по-моему это Хаар, а может я его несколько утрирую, но все равно):
SAS>x[i/2 ] = (x[i] + x[i+1]) / 2; SAS>x[i/2+n/2] = (x[i] — x[i+1]) / 2;
SAS>+ тоже самое по вертикали
SAS>в результате чего в верхней левой части изображения ты получишь даунсампленный вариант исходного изображения (по которому можно к примеру быстро посчитать средную яркость и кол-во крупных объектов), а в остальных частях получишь нечто вроде энергии изображения (на самом деле если просуммировать квадраты (можно и модули конечно для скорости) оставшихся частей, то получишь точно энергию). На мой взгляд это довольно просто и эффективно.
SAS>Удачи.
Неплохо,
Пожалуй попробую. Дело в том, что у меня сейчас есть уже одна достойная простая реализация. С помощью OpenCV lib вычисляю количество контуров. Затем вычисляюю transformation distance (среднюю) в GRAY mode (вот это можно заменить). Затем fuzzy logic киляет большинство хлама (можно простейший триангулярный фильтр взять).
Брать надо усредненные характеристики — это факт. Предположим, у тебя есть две одинакове иконки, но у одной "захвачена" дополнительная "полоска" (1-я есть 16x16, а 1-я есть 16x17). В этом случае все должно быть чики...
Здравствуйте, DoctorM, Вы писали:
DM>Пожалуй попробую. Дело в том, что у меня сейчас есть уже одна достойная простая реализация. С помощью OpenCV lib вычисляю количество контуров. Затем вычисляюю transformation distance (среднюю) в GRAY mode (вот это можно заменить). Затем fuzzy logic киляет большинство хлама (можно простейший триангулярный фильтр взять).
DM>Брать надо усредненные характеристики — это факт. Предположим, у тебя есть две одинакове иконки, но у одной "захвачена" дополнительная "полоска" (1-я есть 16x16, а 1-я есть 16x17). В этом случае все должно быть чики...
OpenCV хорошая либа (учитывая, что делают ее в Новгороде ), но все-таки довольно тяжелая (по объему, не поймите меня превратно). Со скоростями как известно у интелей все в порядке. Если будут интересные результаты напиши пожалуйста.
Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>Здравствуйте, DoctorM, Вы писали:
DM>>Пожалуй попробую. Дело в том, что у меня сейчас есть уже одна достойная простая реализация. С помощью OpenCV lib вычисляю количество контуров. Затем вычисляюю transformation distance (среднюю) в GRAY mode (вот это можно заменить). Затем fuzzy logic киляет большинство хлама (можно простейший триангулярный фильтр взять).
DM>>Брать надо усредненные характеристики — это факт. Предположим, у тебя есть две одинакове иконки, но у одной "захвачена" дополнительная "полоска" (1-я есть 16x16, а 1-я есть 16x17). В этом случае все должно быть чики...
SAS>OpenCV хорошая либа (учитывая, что делают ее в Новгороде ;) ), но все-таки довольно тяжелая (по объему, не поймите меня превратно). Со скоростями как известно у интелей все в порядке. Если будут интересные результаты напиши пожалуйста.
Канечна напишу,
А о "тяжести" я сейчас товарисчам по корпорации поведаю... :-))
Здравствуйте, DoctorM, Вы писали:
DM>Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>>Здравствуйте, DoctorM, Вы писали:
DM>>>Пожалуй попробую. Дело в том, что у меня сейчас есть уже одна достойная простая реализация. С помощью OpenCV lib вычисляю количество контуров. Затем вычисляюю transformation distance (среднюю) в GRAY mode (вот это можно заменить). Затем fuzzy logic киляет большинство хлама (можно простейший триангулярный фильтр взять).
DM>>>Брать надо усредненные характеристики — это факт. Предположим, у тебя есть две одинакове иконки, но у одной "захвачена" дополнительная "полоска" (1-я есть 16x16, а 1-я есть 16x17). В этом случае все должно быть чики...
SAS>>OpenCV хорошая либа (учитывая, что делают ее в Новгороде ), но все-таки довольно тяжелая (по объему, не поймите меня превратно). Со скоростями как известно у интелей все в порядке. Если будут интересные результаты напиши пожалуйста.
DM>Канечна напишу,
DM>А о "тяжести" я сейчас товарисчам по корпорации поведаю...
Пару слов в поддержку вейвлетов — если ты возмешь верхний слой, с этим слоем ты можешь значительно быстрей сравнивать свои картинки. То есть если ты предполагаешь, что можешь захватить часть кадра, тебе нужно сравнивать картинки со сдвигом, возможно с поворотом, или с масштабированием. После вейвлета это будет сделать быстрей (оставив меньше слоев) и возможно точней (избавишься от мелких деталей и шума).
Кроме того вейвлет так-же работает и черно-белым изображением.
А вот сравнение по количеству контуров я не совсем понял.
И убирать шум fuzzy logic процесс тоже медленный.