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