06.11.2011, 20:09 | #61 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,366
Репутация скрыта
|
OverDoser, если масштабирование полное, а не отдельное по каждой оси, то при таком масштабировании сохраняются углы. Подобие же, как-никак Только Вам всё равно придётся вектризовать изображения (предположим, каждый объект - один непрерывный контур, состоящий из отрезков прямых; полагаю, для Вашего случая такое предположение справедливо). Соответственно, последовательность величин углов между соседними сторонами должна быть одинаковой: выстраиваем их в список по определённому направлению, по или против часовой, и начинаем сравнивать углы (только точку старта, вследствие поворота, придётся двигать по всему списку). Если какой-то случай совпадает, то сравнить длины сторон всё равно надо, ибо подобие при равенстве углов гарантируется только в случае выпуклых многоугольников. Но упрощение всё-таки налицо. А если Вы про свойства в растровом изображении, то я не понимаю, какими они могут быть. Нет, контрольную сумму и для этого случая можно придумать, но это достаточно сложная задача. Добавлено через 3 минуты Хотя... для теста можете, скажем, подсчитать две величины: расстояние между самыми отдалёнными пикселями фигуры и её площадь. Первая величина позволит Вам зафиксировать отношение размеров образца к размерам объекта, ну а вторая как раз и будет некой контрольной суммой. Добавлено через 7 минут В общем, если Вам нужен простой и эффективный алгоритм, работающий на достаточно разных изображениях, то это вариант как раз подойдёт, пожалуй. Ложных срабатываний должно быть не так много, и для каждого можно уже включить более тонкие варианты. Только не забывайте, что площади образца и масштабированного изображения будут относиться как квадраты их одинаковых (до подобия) отрезков, площадь же.
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) Последний раз редактировалось pokibor; 06.11.2011 в 20:17. Причина: Добавлено сообщение |
||
|
06.11.2011, 20:47 | #62 | ||
Опытный игрок
Регистрация: 08.09.2006
Адрес: столица России - Москва
Сообщений: 1,406
Репутация: 130
|
pokibor, М, не понял.
Так что мне значит нужно считать и находить: Нахожу самый длинный отрезок, который соединяет противолежащие точки границы. Нахожу площадь. Далее смотрю :нахожу коэффициент k=(отрезок на данном объекте/отрезок на образце)^2.Далее , если (S(объекта)/k)~S(образца),то это нужный объект. |
||
|
06.11.2011, 20:52 | #63 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,366
Репутация скрыта
|
OverDoser, да, именно так. Самое простое, по-моему, что можно придумать. Площадь для пиксельного объекта считается элементарно, а вот самый длинный отрезок между точками границы... Ну, тут придётся немного подумать. Но не думаю, чтобы это было сложно.
Добавлено через 1 минуту Хотя вместо самого длинного отрезка можно брать, например, длину периметра. Тоже линейная штука, её, возможно, проще будет считать.
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) Последний раз редактировалось pokibor; 06.11.2011 в 20:54. Причина: Добавлено сообщение |
||
|
06.11.2011, 21:01 | #64 | ||
Опытный игрок
Регистрация: 08.09.2006
Адрес: столица России - Москва
Сообщений: 1,406
Репутация: 130
|
pokibor, Самый длинный отрезок-это есть самый длинный отрезок из двух, которые соединяют крайние противолежащие точки.
Получим координаты этих точек-вот и готово. Хотя,таки,площадь и правда легче считать) PS.Я вот подумал.. Почему бы не найти центр тяжести объекта, считая его относительно прямоугольника, который описывает фигуру? У нас же объект может:поворачиваться или перемещаться(все происходит вокруг центра тяжести, значит, координаты остаются прежними, или масштабирование(центр тяжести const) Последний раз редактировалось OverDoser; 06.11.2011 в 21:40. |
||
|
06.11.2011, 22:11 | #65 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,366
Репутация скрыта
|
Цитата:
Цитата:
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
||
|
06.11.2011, 22:39 | #66 | ||
Опытный игрок
Регистрация: 08.09.2006
Адрес: столица России - Москва
Сообщений: 1,406
Репутация: 130
|
pokibor, Как бы я искал центр тяжести:
Нашел бы самую минимальную и максимальную Y и X (назовем X1 и Y1-минимальные,X2 и Y2-максимальные)точек у объекта Принял бы X1 за ноль, тогда вторая координата(X2) станет X2-X1.Поделил бы (X2-X1)/2-получил абсциссу центра тяжести. Также поступил бы и с Y. Нашел бы у объекта(X3,Y3) и образца(X4,Y4) координаты центра тяжести. Сравнил бы Х3 с X4 и Y4,Y3 с X4 и Y4. Если совпадения есть-мы нашли искомый объект UP.Что-то тупанул, не всегда работает =( Последний раз редактировалось OverDoser; 06.11.2011 в 22:46. |
||
|
15.11.2011, 00:28 | #67 | ||
Юзер
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61
|
Из положительных и отрицательных элементов массива а нужно составить 2 массива, удалив при этом получившиеся нулевые элементы, с последним как раз и загвоздка, а именно в циклах, выделенных красным цветом. Подскажите, пожалуйста.
Код:
static void Main(string[] args) { Console.WriteLine("Введите число элементов массива а"); int size = int.Parse(Console.ReadLine()); int[] a = new int[size]; int[] b = new int[size]; int[] c = new int[size]; int k = 0; for (int i = 0; i < size; i++) { Console.WriteLine("Введите элемент {0}:", i); a[i] = int.Parse(Console.ReadLine()); if (a[i] < 0) { b[i] = a[i]; } else if (a[i] > 0) { c[i] = a[i]; } } Console.WriteLine(); Console.Write("Первоначальный массив: "); foreach (int j in a) { Console.Write(j + " "); } Console.WriteLine(); Console.WriteLine("Массив из отрицательных элементов массива а: "); foreach (int j in b) { if (j == k) { ??? } } Console.WriteLine(); Console.Write("Массив из положительных элементов массива а: "); foreach (int j in c) { if (j == k) { ??? } } Console.Read(); } } }
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь... |
||
|
15.11.2011, 01:13 | #68 | ||
Юзер
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172
|
Arantar, А в чём проблема-то? Если j != k тогда выводим.
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey* Контактик Щебет Лицокнижка Спроси меня Гплюс |
||
|
15.11.2011, 01:34 | #69 | ||
Юзер
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61
|
CMETAHA, блин, точно! Как всегда.
А размер массива уменьшается при этом или остаётся прежним (только нулевые элементы не выводятся)?
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь... |
||
|
15.11.2011, 01:39 | #70 | ||
Юзер
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172
|
Arantar, Нулевые не выведутся. А размер массивов не измениться. Ты же не удаляешь/добавляешь элементы. Ты просто выводишь значения ячеек массивов.
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey* Контактик Щебет Лицокнижка Спроси меня Гплюс |
||
|
15.11.2011, 01:45 | #72 | ||
Юзер
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172
|
Arantar, Ну так ты же их и не записываешь. В массив b ты записываешь только отрицательные элементы, а в массив c только положительные. Правда ты это достаточно криво делаешь.
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey* Контактик Щебет Лицокнижка Спроси меня Гплюс |
||
|
15.11.2011, 08:34 | #73 | ||
Юзер
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61
|
Почему криво?
У меня получается так например: Первоначальный массив: 2 -4 5 9 -1 Массив из отрицательных элементов массива а: 0 -4 0 0 -1 Массив из положительных элементов массива а: 2 0 5 9 0 Но они же есть эти нулевые элементы и их нужно убрать.
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь... |
||
|
15.11.2011, 11:56 | #74 | ||
Юзер
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172
|
Arantar, Вот именно из-за наличия этих нулевых элементов и криво. Можно ведь заполнять массивы так, чтобы не было этих нулей.
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey* Контактик Щебет Лицокнижка Спроси меня Гплюс |
||
|
15.11.2011, 15:03 | #75 | ||
Юзер
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61
|
Подскажите, как это можно сделать, если нетрудно.
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь... |
||
|
15.11.2011, 23:03 | #76 | ||
Юзер
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172
|
Arantar, Использовать динамический массив. Т.е. ArrayList. Для этого необходимо подключить System.Collections.
ArrayList myArrayList = new ArrayList(); Затем с помощью метода Add добавляешь необходимый элемент в конец. Скрытый текст:
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey* Контактик Щебет Лицокнижка Спроси меня Гплюс |
||
|
16.11.2011, 00:48 | #78 | ||
Юзер
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172
|
Arantar, Потому что так работает метод Add. Если нужно вставить в произвольное место, то можешь воспользоваться методом Insert.
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey* Контактик Щебет Лицокнижка Спроси меня Гплюс |
||
|
16.11.2011, 01:28 | #79 | ||
Зинеб Нора
Регистрация: 30.06.2003
Адрес: Köln, Germany
Сообщений: 962
Репутация: 420
|
Цитата:
__________________
Жив. Цел. Тигръ Графоман "Method takes the string and string to split. And split the string at string to split, also add space at the end of the string if string ends with string to split." Рисуем вместе |
||
|
22.11.2011, 23:25 | #80 | ||
Юзер
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61
|
Написать программу «Автоматизированная информационная система на железнодорожном вокзале». Информационная система должна содержать сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: номер поезда, станция назначения, время отправления.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
Подскажите, пожалуйста, как реализовать удаление информации о выбранном рейсе или информации о всех рейсах сразу. http://s017.radikal.ru/i417/1111/07/2014ad7475a9.jpg Скрытый текст:
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь... Последний раз редактировалось Arantar; 23.11.2011 в 14:50. |
||
|
Метки |
c#, обсуждение, помощь, программирование |
|
|
|