Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/72: Рейтинг темы: голосов - 72, средняя оценка - 4.97
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309

Охарактеризовать объект по каким-либо признакам его строения

14.10.2012, 23:01. Показов 16516. Ответов 222
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Стоит задача охарактеризовать объект по каким-либо признакам его строения.

Есть графики (построенные по набору расстояний от центра объекта к каждой точке его периметра) для объектов известных нам типов, каждому типу присущи свои особенности формы (всевозможные ямки и т.д.). У некоторых типов могут присутствовать сразу несколько особенностей.

Как научить программу искать эти особенности, если они могут проявляться на разных масштабах?
Какие-то маски накладываются растягивающиеся или как?

Примеры:
Миниатюры
Охарактеризовать объект по каким-либо признакам его строения   Охарактеризовать объект по каким-либо признакам его строения  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2012, 23:01
Ответы с готовыми решениями:

Построить круг и закрасить его каким-либо цветом
Нужно построить круг и закрасить его каким-либо цветом. Пробовал использовать процедуры PieSlice, FillEllipse, но у них получается...

По каким признакам мы выбираем себе пару
to Елена Да может, может, я уже говорил про майора Чингачгука, вы невнимательно читали. Я не о том. В молодости все глупые девушки...

По каким диагностическим признакам в шлифе можно отличить кварц от ортоклаза?
3)По каким диагностическим признакам в шлифе можно отличить кварц от ортоклаза?

222
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
20.11.2012, 00:33
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Sor Посмотреть сообщение
Если брать рамки от мин до макс, то под эту "особенность" опадает 898 клеток из 1066, а если от 10 до 24 то 336 клеток.
Значит, это не особенность...

Я вообще плохо понимаю, на основе чего продолжается это исследование? Была ли найдена хоть одна реальная особенность формы, специфичная лишь одному типу клеток? И если да, то есть ли, опять же, реальная перспектива найти подобные особенности для других типов клеток?
На глаз по выложенным изображениям нет этих особенностей для всех типов. Вычислительные методы, судя по постам тоже не дают приемлемых результатов. Или для исследования достаточно научиться опознавать хоть один тип? Так это просто - там пара типов со скрученными ядрами, все остальные более-менее круглые.
Неплохо бы повысить разрешение съемки, как-то стабилизировать ракурс относительно ядер - попробовали бы приложить к раствору постоянное магнитное поле, что ли...
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
20.11.2012, 19:27  [ТС]
исследование продолжается на основе календарного плана семестра. до конца декабря оно будет продолжаться)
нету особенностей присущих только одному типу клетки. нужно смотреть комбинации всех особенностей теперь.. с исходными данными колдовать уже нельзя.

Как можно описать различие этих графиков? если опираться на то,что 1й гладкий, 2й и 3й - ломанные (2й и 3й один и тот же тип).
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
20.11.2012, 22:11
Цитата Сообщение от Sor Посмотреть сообщение
исследование продолжается на основе календарного плана семестра.
И снова здравствуй, совок.
Цитата Сообщение от Sor Посмотреть сообщение
Как можно описать различие этих графиков? если опираться на то,что 1й гладкий, 2й и 3й - ломанные
Смотреть амплитуду пиков, как еще-то?
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
20.11.2012, 22:53  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
И снова здравствуй, совок
ну а как еще)

Цитата Сообщение от BRcr Посмотреть сообщение
Смотреть амплитуду пиков
Т.е. на каких-то выборках, смотреть разность локального минимума и максимума? Как бы мне определить эту самую выборку как среднюю из всех ломанных графиков?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
20.11.2012, 23:46
Проанализируй заведомо гладкие графики и возьми среднюю амплитуду - в дальнейшем, если средняя амплитуда превышает эталонную, то график "ломанный". Дополнительно неплохо бы ввести отсеивание слишком больших амплитуд, чтоб не искажали среднее значение.
1
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
21.11.2012, 00:06
нету особенностей присущих только одному типу клетки.
А остальные 9 типов вы уже легко распознаете по их особенностям?

Не по теме:

И снова здравствуй, совок
А вот не надо, при совке образование лучше было

0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
21.11.2012, 00:24  [ТС]
gumi250, нет. у меня получилось выделить 4 особенности формы из 10 типов. сейчас доделаю с ломанным графиком и буду смотреть, что получается при наличие сразу нескольких особенностей. на данный момент комбинации их присутствия помогают отсеять типы (в основном 2-3 из 10), сравнение с которыми по всей базе проводить не нужно.
П.с. опять же, все работает на данной выборке, а она корявая, неравномерная из-за сферы деятельности.
0
21.11.2012, 00:45

Не по теме:

Цитата Сообщение от gumi250 Посмотреть сообщение
при совке образование лучше было
По каким-то критериям - да, по каким-то - нет. Все относительно, спроси Эйнштейна.:D

0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
05.12.2012, 22:53  [ТС]
Прошу очередного совета.
После загрузки объекта и его анализа, программа должна обращаться к базе (10 разных файлов), но в порядке, который зависит от результатов анализа (какие особенности присутствуют). Все вариации порядка обращения к файлам пока не известны, но они не являются членами последовательностей. Как решаются такие проблемы, кроме как обращения в лоб по заданной очереди?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.12.2012, 09:45
А почему в этом месте вдруг проблема? Как и при любом поиске, последовательность следует выстраивать по релевантности результатов. Должны же образцы базы данных быть как-то охарактеризованы - например, индексный файл, перечисляющий особенности в конкретных образцах базы.
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
06.12.2012, 23:29  [ТС]
база состоит из 10 файлов тхт, 1 2 3 .. 10, раньше проверка велась по порядку (++i), сейчас порядок будет разный в зависимости от полученных от клетки данных (10, 2, 4 ,5, 1,3, 7, 9,8 например). как бы переборы эти автоматизировать? выхода кроме явной задачи пути к каждому итз 10 файлов не вижу ..
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.12.2012, 14:41
Я ж говорю, сделай индекс. Например, в виде map<string, int> - в ключе перечисляются именованные особенности, значением является номер файла. Или точно так же использовать TStringList - там есть удобные свойства Strings, Names, Values для работы с парами значений и вдобавок TStringList проще сохранять\грузить.
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
07.12.2012, 18:34  [ТС]
BRcr, что-то я не понял как это. индекс файла сделать через пару, в стринг писать все особенности?

я делаю так: каждая особенность (всего 4) возвращает bool, получается 0101, например, или 1110, допустим, для каждого варианта (0000-1111) своя последовательность сравнения с базой (проверяться будут все файлы, просто какие-то имеют приоритет). то есть просто в string недостаточно будет записать по одной особенности, там нужно их комбинации учесть причем с иерархией. а т.к. проверка идет по всем файлам всегда, то и ключ одинаковый везде?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.12.2012, 22:50
Цитата Сообщение от Sor Посмотреть сообщение
для каждого варианта (0000-1111) своя последовательность сравнения с базой (проверяться будут все файлы, просто какие-то имеют приоритет).
На основе чего выставляются приоритеты файлов базы? Как охарактеризовано содержимое файлов базы - по наличию\отсутствию в них тех или иных особенностей, по вероятности наличия особенностей или еще как-то?
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
07.12.2012, 22:57  [ТС]
файлы (10 шт) - наборы форм 10 типов клеток.
приоритеты выставляются по % содержанию клеток с найденным набором особенностей.
Т.е. для всех 0000-1111 вариантов набора особенностей было определено в скольких случаях они встречаются в клетках исходя из этого и будет сравнение с базой происходить: от максимального % встреч к минимальному.
Миниатюры
Охарактеризовать объект по каким-либо признакам его строения  
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
07.12.2012, 22:58  [ТС]
файлы (10 шт) - наборы форм 10 типов клеток.
приоритеты выставляются по % содержанию клеток с найденным набором особенностей.
Т.е. для всех 0000-1111 вариантов набора особенностей было определено в скольких случаях они встречаются в клетках и исходя из этого и будет сравнение с базой происходить: от максимального % встреч к минимальному.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.12.2012, 01:10
Отлично! Все, что нужно - слегка усложнить структуру контейнера, в котором будет храниться вся эта информация в легкодоступном виде.
Одним из наиболее удобных вариантов будет map< String, multimap< double, String > >, где ключом для map будет служить строчка вида "0101", ключом для multimap будут процентовки файлов для данной комбинации особенностей, значениями multimap будут имена файлов.
Пример заполнения и использования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using namespace std;
typedef multimap< double, String > rated_files_type;
typedef map< String, rated_files_type > combinations_type;
//...
 
combinations_type a_map;
String id = "0001";
// следующее заполнение логичнее выполнять в цикле, меняя содержимое строчки id \
и соответственно заполняя процентовки и имена \
я не знаю, в каком виде эта информация хранится/вычисляется у тебя сейчас, \
поэтому не могу описать данный цикл
a_map[id][94.7] = "1";
a_map[id][21.9] = "7";
// либо вот так, если что... а-то multimap у меня иногда капризничает с оператором доступа по индексу... :)
typedef pair< double, String > rated_filename_type;
a_map[id].insert( rated_filename_type( 21.9, "7" ) );
// и т.д. и т.п.
//...
 
// получить имена файлов для данной комбинации особенностей \
согласно их процентовке теперь весьма просто, так как multimap \
внутри сортирует пары по ключу - по процентовке в данном случае; \
нам нужна сортировка от большего к меньшему, поэтому воспользуемся реверсными итераторами
String current_filename, current_id = "0101";
for( rated_files_type::iterator it = a_map[current_id].rbegin(  ); it != a_map[current_id].rend( ); ++it ){
    current_filename = "base_files\\" + it->second + ".txt";
    // тут используем current_filename для последовательного доступа к файлам базы по убывающей по процентовке
    // ...
}
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
08.12.2012, 13:20  [ТС]
BRcr, огромное спасибо!
Что будет если какую-то комбинацию не ввести (например 0000), а она вернется при обследовании?
Как пойдет процесс сравнения если есть типы с одинаковым % содержанием (0%)?

Остается только склеить 4 bool в одно число)

Цитата Сообщение от BRcr Посмотреть сообщение
следующее заполнение логичнее выполнять в цикле, меняя содержимое строчки id \ и соответственно заполняя процентовки и имена \
У меня это единожды посчиталось и все. а можно ведь сделать перерасчет при каждом запуске или при каждом изменении базы и гордо обозвать самообучающийся алгоритм)

Добавлено через 2 минуты
логичнее же глобально забить % встреч и т.д., чем при каждом обращении к базе?
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
08.12.2012, 13:37  [ТС]
я как всегда поспешил)
C++
1
2
#include <map>
#include <utility>
подключил, но ошибки все равно есть.

C++
1
typedef pair< double, String > rated_filename_type;
эта строка позволит мне локально с парой работать потом?

C++
1
2
3
pair<float,int> chain;  
chain=make_pair(mini,i);
cmp.push_back(chain);
Миниатюры
Охарактеризовать объект по каким-либо признакам его строения   Охарактеризовать объект по каким-либо признакам его строения   Охарактеризовать объект по каким-либо признакам его строения  

Охарактеризовать объект по каким-либо признакам его строения  
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.12.2012, 14:27
Нда... и реверсные итераторы не берутся толком... то ли шаблон multimap недописанный, то ли руки у меня кривые...
Но ничего страшного, и без них как с ними. Вот рабочий вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    using namespace std;
    typedef multimap <double, String> rated_files_type;
    typedef map <String, rated_files_type> combinations_type;
    // ...
 
    combinations_type a_map;
    String id = "0101";
 
    typedef pair <double, String> rated_filename_type;
    a_map[id].insert( rated_filename_type( 21.9, "7" ) );
    a_map[id].insert( rated_filename_type( 94.7, "1" ) );
    a_map[id].insert( rated_filename_type( 10.65, "9" ) );
 
    String current_filename, current_id = "0101";
    rated_files_type::iterator it = a_map[current_id].end( ), end = a_map[current_id].begin( );
    for ( --end; --it != end; ) {
        current_filename = "base_files\\" + it->second + ".txt";
        ShowMessage( current_filename );
    }
Цитата Сообщение от Sor Посмотреть сообщение
Как пойдет процесс сравнения если есть типы с одинаковым % содержанием (0%)?
Для этого и есть multimap, в нем ключи не обязаны быть уникальными. Файлы с одинаковой процентовкой будут один за другим обрабатываться.
Цитата Сообщение от Sor Посмотреть сообщение
эта строка позволит мне локально с парой работать потом?
Конечно, это всего лишь определение псевдонима типа, ничто не помешает потом как использовать данный псевдоним, так и не использовать.

Добавлено через 3 минуты
Цитата Сообщение от Sor Посмотреть сообщение
Что будет если какую-то комбинацию не ввести (например 0000), а она вернется при обследовании?
Ничего страшного не будет, ошибки при обращении к a_map по несуществующему ключу не будет. Ну, и обработано по этому ключу тоже ничего не будет, карта ведь пустая.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2012, 14:27

По каким характерным признакам можно определить респектабельность фирмы-поставщика
По каким характерным признакам можно определить респектабельность фирмы-поставщика??? Добавлено через 13 минут По каким характерным...

Прошу объяснить мне почему я не могу задать размер массива с консоли, без его ограничения каким либо числом?
int n; int mx = 0; cin &gt;&gt; n; int a ; //не выходит это чертово n использовать приходится писать по дркугому for...

Для чисел из файла указать его значение в обратном либо дополнительном коде, либо его инверсию по выбору
Исходный файл содержит числа в двоичной системе счисления, отдельные друг от друга запятыми. Составьте программу , которая для каждого...

Необходимо в зависимости от подставляемых значений либо удалять рисунок либо оставлять его
Всем привет. Просьба оказать посильную помощь. Есть Word шаблон, он заполняется из Excel при помощи значений в ячейках, которые...

Составить программу, которая корректирует список и сортирует его либо по среднему баллу, либо по алфавиту
Список студенческой группы записан на диске как текстовый файл. Каждая строка списка содержит фамилию студента и три экзаменационные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru