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

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

14.10.2012, 23:01. Показов 14781. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru