|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
|
Охарактеризовать объект по каким-либо признакам его строения14.10.2012, 23:01. Показов 14728. Ответов 222
Метки нет (Все метки)
Добрый день!
Стоит задача охарактеризовать объект по каким-либо признакам его строения. Есть графики (построенные по набору расстояний от центра объекта к каждой точке его периметра) для объектов известных нам типов, каждому типу присущи свои особенности формы (всевозможные ямки и т.д.). У некоторых типов могут присутствовать сразу несколько особенностей. Как научить программу искать эти особенности, если они могут проявляться на разных масштабах? Какие-то маски накладываются растягивающиеся или как? Примеры:
0
|
|
| 14.10.2012, 23:01 | |
|
Ответы с готовыми решениями:
222
По каким признакам мы выбираем себе пару По каким диагностическим признакам в шлифе можно отличить кварц от ортоклаза? |
|
|
|
| 15.10.2012, 00:02 | |
|
Я бы в процентах мерил либо приводил масштабы. Если в процентах, то за 100% можно взять разницу между локальными минимумом и максимумом на выбранном диапазоне и все остальные особенности измерять уже в сравнении с этим, тогда масштаб не имеет значения. Если приводить масштабы, то просто равномерно повыкидывать лишние точки из большего набора.
0
|
|
|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
||
| 15.10.2012, 12:25 [ТС] | ||
|
BRcr, в идеале я бы хотел создать по bool функции для каждой особенности, которая выдавала есть ли соответствующая особенность на объекте или нет, а из полученных данных уже вывод делать.
Но надо учесть, что размер объектов разный (даже при одинаковых типах) и размер этих ямок разный (даже в % содержании от размера объекта).
0
|
||
|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
|
| 15.10.2012, 12:29 [ТС] | |
|
вот например 2 объекта одного типа
0
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||
| 15.10.2012, 15:16 | ||
Думаю ваша задача тесно связана с распознаванием образов, может вам стоит посмотреть в этом направлении.
0
|
||
|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
||||
| 15.10.2012, 15:24 [ТС] | ||||
|
0
|
||||
|
|
|
| 15.10.2012, 15:26 | |
|
Уже разбирали ведь тему здесь - Сравнения изображений по форме, нормировка по масштабу
Также там считалось среднее отклонение. Только тут для части объекта, вот и вся разница.
0
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|||
| 15.10.2012, 16:04 | |||
0
|
|||
|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
||||
| 15.10.2012, 21:38 [ТС] | ||||
|
0
|
||||
|
|
|
| 15.10.2012, 23:12 | |
Так надоест функции клепать. Надо делать более унифицированный подход к анализу признаков.Как я это вижу в теории - наборы данных, характеризующих отдельные особенности формы, инкапсулировать в структуры с единым интерфейсом; определить там два приближения по данным - собственно, массив значений, задающий форму, и некая более грубая характеристика, независимая от масштабов, наиболее вероятно, построенная на каких-либо внутренних соотношениях характеристик формы - скажем, процентное соотношение положений локальных минимумов и максимумов и их последовательность. Таким образом анализ будет состоять из двух частей: сперва прошлись по анализируемой форме грубым анализом и откинули совсем уж неподходящие шаблоны, затем оставшиеся шаблоны сравниваем с формой по значениям, задающим форму, при этом приводя масштабы шаблона и формы к одному виду. Все, под конец получаем наиболее подходящий шаблон(или несколько), смотрим степень его совпадения с формой и принимаем решение в зависимости от заданного допуска.
1
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 16.10.2012, 01:26 | |
|
Тема распознавания образов очень сложная, поэтому так в лоб ее решить очень сложно. А не могли бы вы рассказать первоначальную задачу? А то вы рассказываете нам ее с середины, поэтому посоветовать вам что то толкового невозможно.
0
|
|
|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
|
| 16.10.2012, 16:35 [ТС] | |
|
Задача создать или попытаться создать ПО, распознающее на изображении мазка крови клетку, принадлежащую к одному из 10 типов и правильно определяющее тип.
Но ПО должно базироваться именно на форме объекта, а не на структуре внутри него. То есть из исходных данных только последовательный набор радиусов от центра объекта до каждой точки на его границе. До данного этапа программа сравнивала неизвестную клетку по этой характеристике с базой и выдала тип предполагаемой клетки. Но это слишком долго, примерно 2.30 мин на каждую тысячу объектов в базе. Сейчас есть мысль найти "особенности" формы у каждого типа клеток и не сравнивать неизвестную клетку со всей базой, а смотреть какие "особенности" на ней есть. (Ну например: нужно отличить кота от свиньи. и там и там хвост, 4 конечности, но наличие шерсти или копыт однозначно определяет животное).
0
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 16.10.2012, 17:20 | |
|
Т.е. насколько я понимаю качество распознавания существующего ПО вас устраивает, вы просто хотите уменьшить время поиска так?
Если так, то я бы сделал предварительный (грубый) поиск. Т.е. выделил бы несколько крупных отличительных признаков, которые бы отличали животых. Например, если у неизвестного животного нашли хвост и рога, то нужно искать это животное не по всей базе, а только среди хвостатых и рогатых, а это сузит круг поиска и соответственно сократит время поиска. А если не найдем среди хвостатых и рогатых, тогда будем искать по всей базе. При этом основной метод сравнения животных остается старым! а наш поиск признаков лишь вспомогательный, а вовсе не решающий фактор. Но в любом случае нужно найти эти признаки (рога и хвоты). Врят ли можно что то вам посоветовать пока не увидим реальных примеров ваших графиков. Нельзя сказать какой признак отличает эти кривые пока вы их не покажите. Ведь не сложно найти на графике ямки и горбы, можно найти их относительную амплидуту и ширину, охарактеризовать форму ям и горбов, можно разложить в ряд Фурье,но откуда мы можем знать что именно вам подойдет. А вы не рассматривали возможность распараллеливания поиска? Если сейчас программа ищет в один поток, то на современном проце можно искать например в 8 потоков.
1
|
|
|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
|||
| 16.10.2012, 19:06 [ТС] | |||
|
gumi250, точность на данный момент тоже не устраивает меня, но Ваша идея мне понравилась, спасибо. Думаю так скорее всего и придется сделать, из-за того, что не получится наличием хвоста, шерсти и т.д. отличить немецкую овчарку от среднеазиатской. То есть возможно наличие какого-то признака сузит сравнение с 10типов до 3х, например.
0
|
|||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 17.10.2012, 00:58 | |
|
Т.е. насколько я понимаю на данный момент у вас примерно такой алгоритм работы: у вас есть 10 типов графиков. Каждый тип графика задается примерно 100 кривыми. Чтобы классифицировать неизвестную кривую вам нужно ее сравнить с каждой из 1069шт., найти самую похожую и эта самая похожая будет того же типа, что и неизвестная кривая. Так?
Вопрос: Если вы возьмете неизвестную кривую, то вы сами (без помощи компьютера) сможете точно и уверенно определить ее тип? Если ответ нет, то это все усложняет. Если ответ да, то определитесь по каким признакам вы это делаете. Может пичок какой, может форма его или еще чего. 1-ый этап это понять какие это признаки, и 2-ой этап найти их на неизвестной кривой? Вы сейчас на каком этапе? Во сколько раз вы хотите ускорить работу вашего поиска?
0
|
|
|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
||||
| 17.10.2012, 12:32 [ТС] | ||||
|
0
|
||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||
| 17.10.2012, 13:30 | ||
А насколько точно вы можете найти и выделить границы клетки на изображении? Не перекрывают ли они друг друга? Не зашумлена ли граница?
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 17.10.2012, 13:34 | |
|
мысли вслух:
1 пусть есть набор образцов. каждый образец представляет собой кривую. каждый образец приведен к безразмерному виду: минимальное значение y принято за 0, максимальное значение y принято за 1, координата x начала кривой принята за 0, координата x конца кривой принята за 1. каждому образцу назначена точность соответствия. например, в виде максимального абсолютного отклонения любой точки анализируемой на соответствие кривой от кривой образца (то есть как бы задана зона вверх и вниз от кривой образца в которой должна лежать анализируемая кривая для того, что бы она была признана принадлежащей к типу характеризуемому образцом). другой способ - каждый из образцов усредняется с заданным шагом (необходимо что бы изменение кривой на каждом из шагов было не слишком велико). тогда вместо кривой получим набор столбиков площади которых будут площадью под кривой на каждом из шагов. все образцы проверены на уникальность во избежание ошибок (проверка проводится сравнением каждого образца со всеми остальными с заданной для них точностью). 2 теперь собственно поиск на произвольной кривой известных образцов. начало анализируемого участка скользит по кривой от ее начала до конца с заданным в настройках шагом (очевидно он должен быть выбран таким что бы на нем кривая не изменялась слишком сильно). размер анализируемого участка меняется в диапазоне от заданных в настройках минимума до максимума (тут, наверное, только эксперт может сказать до каких размеров может меняться образец). попадающий в окно анализируемый участок кривой приводится к безразмерному виду и сравнивается с набором образцов. как то так. правда процедура поиска при всей своей элегантной красоте является очень тяжелой.
1
|
|
|
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
|
|||
| 17.10.2012, 15:00 [ТС] | |||
|
0
|
|||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||
| 17.10.2012, 15:49 | ||
Как вы можете это подтвердить? Ведь всегда будет ошибка распознавания. Например, ваш алгоритм будет распознавать с 30% ошибкой это подтверждение или опровержение? А какой смысл всего этого? Просто исследовательский (дипломная работа) или все таки практическая ценность есть? Если клетки легко отличить по структуре (лошадь от коровы легко отличить по рогам), какой смысл искусственно усложнять себе жизнь и выкидывать наиболее яркие приметы и распознавать по вторичным признакам (а можно ли отличить корову от лошади по левой задней ноге)? Вообще то мозг и глаз человека очень здорово ищет одни общие приметы в объектах, в частности в их форме и классифицирует по ним объекты. Т.е. если на глаз вы не можете найти общие признаки в форме и классифицировать по ним неизвестную клетку по ее форме (залив клетку на изображении одним цветом), то врятли вам удастся научить этому компьютер с хорошей точностью.
0
|
||
| 17.10.2012, 15:49 | |
|
Помогаю со студенческими работами здесь
20
По каким характерным признакам можно определить респектабельность фирмы-поставщика Прошу объяснить мне почему я не могу задать размер массива с консоли, без его ограничения каким либо числом? Для чисел из файла указать его значение в обратном либо дополнительном коде, либо его инверсию по выбору
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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(), которая. . .
|