Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Здравствуйте, Кос, Вы писали:
Кос>>Здравствуйте, Leonidze, Вы писали:
L>>>порезать монетку на половинки, для которых посчитать "центры тяжести". исходя из этого и данных эталона посчитать угол. Кос>>А зачем на половинки?
Кос>>Если рисунок достаточно не однородный есть такой вариант: Кос>> посчитать координаты гемоетрического центра монеты, и центров тяжести, до и после поворота. Кос>> Если же центры тяжести и геометрическей близки — можно попытаться вычленить рисунок монетки (пороговым сечением)
ATP>А можно пожалуйста ссылочку на данную тему? Что за центры тяжести на картинке?
ссылочками не раполагаю, поищите сами. Могу вкратце объяснить
геометрический центр — суммируешь все координаты точек, относящихся к объекту (обычно это точки выше или ниже заданной яркости, т.е. монетка от фона должна отличаться яркостью своей), и делишь их на количество точек, вошедших в сумму. суммируешь — значит иксы складываешь с иксами, игрики с игриками.
центр масс (я его "тяжести" обозвал, что, конечно неграмотно и неверно) — почти тоже самое но учавствуют яркости. т.е. сумируешь координаты, каждая из которых должна быть помножена на яркость пикселя. потом делишь всё это дело на суммарную яркость этих пикселей. т.е. Xцм = Хi*Bi/сумм(Bi) и для Y аналогично
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Как вы считаете такой способо будет работать:
ATP>1. Найдти на изображение екстремумы (например пусть буду максимумы) ATP>2. Выделить из них N точек. Здесть у меня остается вопрос по какому критерию их выделять? ATP>3. Вычислить для этих точек градиены. ATP>4. Сравнить градиенты с исходными
как-то он все-таки будет работать, но похоже, что в п.1 эктремумы будут "шуметь", если их искать влоб.
Есть такая фигня, scale-space называется, в ней формулируются некоторые способы, похожие на ваш, выделяющие feature points, являющиеся инвариантными к плоскому вращению изображения, сдвигу и масштабу.
Более близко к практике этот принцип инвариантности использован в sift (scale invariant feature transform) алгоритме. Если говорить в терминах ss, то в sift-е используются экстремумы функции нормализованного лапласиана, а проще говоря детекторы blob-структур, "округлых пятен", которые у пуговицы будут локализованы по краям и на рельефе внутри и иметь разные масштабы, а также самое большое "пятно" — сама пуговица. Эти экстремумы проходят "сито", как в п.2.
По п.3 и 4 — это этап sift-а, соответствующий формированию дескрипторов, т.е. составлению гистограмм направлений градиентов в окрестных областях вокруг blob-"пятна".
ATP>А потом вы предлагаете по четырем этим центрам (2 до поворота и 2 после) вычислить угол — я правильно понимаю?
Да, всё верно понимаете.
ATP>А если центры совпадут?
Тогда не получится определить
Зависит от того, что за рисунок. Если элементы рисунко сильно смещены в куда-то, то будет хорошо, а если вроде как вокруг центра нарисовано — плохо, надо искать другой способ.
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Здравствуйте, Neo27, Вы писали:
N>>Потом программно поворачивать изображение, которое получилось после поворота. N>>И поворачивать до тех пор, пока изображение, которое мы поворачиваем программно не станет N>>схожим с тем, что мы сохранили до начала поворота?
ATP>Это лобовой способ который сразу же приходит в голову. На мой взгляд чрезчур медленный. Дело в том, что положение нужно высчитывать ну хотябы с точностью до градуса, а при таком подходе шаг будет очень маленьким, следовательно количество вычислений слишком большим.
Так ведь можно не весь рисунок крутить и сравнивать, а только некую полоску, тем самым сократится время обработки.
N>>А по поводу удаления фона, можно создать маску "видимости" в виде 2х мерной матрицы, где отображено, какие пикселы показывать, а какие нет. N>>К тому же нам известно, что объект круглый
ATP>Согласен. Сам склоняюсь к этому же. Просто еще теплится надежда что её можно вычислять автоматически исходя из того что известно что предмет круглый.
Я другой аноним.
ATP>Вы всегда так помогаете другим людям, упрекая их в недостатках знаний? Естественно если бы все были гуру во всех областях, то и rsdn не нужет был бы.
Вместо того чтобы кратко и максимально технически грамотно сформулировать свой вопрос, вы умудрились занять десятки строк текста и отнять массу времени у людей.
На будущее: любые вопросы осмыслите, переведите в лаконичную технически корректную форму и задайте их в первую очередь общепризнанным авторитетам в предметной области. Например Кодт и прочие.
P.S. В книжке Гонсалес, Вудс "Цифровая обработка сигнала" даны исчерпывающие сведения о вашей проблематике. Перевести прагматику в алгоритм не составит труда. И не забудьте это сделать, чтобы компенсировать времененные затраты на вас.
Re[6]: Положение монетки
От:
Аноним
Дата:
10.04.08 13:28
Оценка:
Я другой аноним.
Заметим что спрашивающий является специалистом в области "Программист, графики и видео".
Итак, что вы знаете о структуре изображения и топологии? Известно ли вам о пороговых значения, битовых масках и матричных преобразованиях? Методах обнаружения: пересечением, изменяющегося градиента, способах линеаризации при замкнутых пространствах; Использовали ли вы винеровскую фильтрацию? Каким образом вы собираетесь регистрировать поток видеоинформации?
P.S. Если вы не против я на днях я загляну к вашему декану и побеседуем о вашей специальности.
Возникла задача:
Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол.
Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Всем добрый день!
ATP>Возникла задача: ATP>Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол. ATP>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
ATP>P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
Если есть номинал, то есть и текст, показывающий, чего номинал (например: рубль, копейка). А для нахождения угла текста, существуют различные алгоритмы. Можно вычислить угол текста до, и после.
Здравствуйте, Neo27, Вы писали:
N>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Всем добрый день!
ATP>>Возникла задача: ATP>>Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол. ATP>>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
ATP>>P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
N>Если есть номинал, то есть и текст, показывающий, чего номинал (например: рубль, копейка). А для нахождения угла текста, существуют различные алгоритмы. Можно вычислить угол текста до, и после.
Не, текст не обязательно есть и вообще не нужно думать про монетку. Пусть это будет пуговица .
Так вопрос и состоит в просьбе посоветовать или подсказать алгоритм.
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Не, текст не обязательно есть и вообще не нужно думать про монетку. Пусть это будет пуговица . ATP>Так вопрос и состоит в просьбе посоветовать или подсказать алгоритм.
А на "круглый" предмет, можно наносить какие-нибудь опозновательные знаки?
и есть ли они там? точки, линии и т.д. и т.п. что может сильно выделяться?
if (можно наносить знаки){
мысленно вписать квадрат в крутящийся предмет и на предмете, пометить 3 точки, соответствующие углам квадрата.
А далее определять положение этих точек. Главное, чтобы эти точки можно было распознать.
} else{
есть еще множество вариантов.
}
Здравствуйте, Neo27, Вы писали:
N>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Не, текст не обязательно есть и вообще не нужно думать про монетку. Пусть это будет пуговица . ATP>>Так вопрос и состоит в просьбе посоветовать или подсказать алгоритм.
N>А на "круглый" предмет, можно наносить какие-нибудь опозновательные знаки? N>и есть ли они там? точки, линии и т.д. и т.п. что может сильно выделяться? N>if (можно наносить знаки){ N>мысленно вписать квадрат в крутящийся предмет и на предмете, пометить 3 точки, соответствующие углам квадрата. N>А далее определять положение этих точек. Главное, чтобы эти точки можно было распознать. N>} else{ N>есть еще множество вариантов. N>}
Нановить знаки нельзя, так как все взаимодействие производится через камеру. Отличительные знаки конечно есть, иначе задача бы не имела смысла. Будем считать что на нем есть рисунок.
Еще дополнительные замечания:
1. Предмет действительно круглый
2. В поле зрения камеры попадает фон за предметом (как от него можно избавиться?)
ATP>1. Предмет действительно круглый ATP>2. В поле зрения камеры попадает фон за предметом (как от него можно избавиться?)
А что мешает сохранить рисунок до поворота и после поворота.
Потом программно поворачивать изображение, которое получилось после поворота.
И поворачивать до тех пор, пока изображение, которое мы поворачиваем программно не станет
схожим с тем, что мы сохранили до начала поворота?
А по поводу удаления фона, можно создать маску "видимости" в виде 2х мерной матрицы, где отображено, какие пикселы показывать, а какие нет.
К тому же нам известно, что объект круглый
Здравствуйте, Neo27, Вы писали:
N>А что мешает сохранить рисунок до поворота и после поворота.
Ничто не мешает — так и делается.
N>Потом программно поворачивать изображение, которое получилось после поворота. N>И поворачивать до тех пор, пока изображение, которое мы поворачиваем программно не станет N>схожим с тем, что мы сохранили до начала поворота?
Это лобовой способ который сразу же приходит в голову. На мой взгляд чрезчур медленный. Дело в том, что положение нужно высчитывать ну хотябы с точностью до градуса, а при таком подходе шаг будет очень маленьким, следовательно количество вычислений слишком большим.
N>А по поводу удаления фона, можно создать маску "видимости" в виде 2х мерной матрицы, где отображено, какие пикселы показывать, а какие нет. N>К тому же нам известно, что объект круглый
Согласен. Сам склоняюсь к этому же. Просто еще теплится надежда что её можно вычислять автоматически исходя из того что известно что предмет круглый.
Re: Положение монетки
От:
Аноним
Дата:
08.04.08 13:36
Оценка:
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Всем добрый день!
ATP>Возникла задача: ATP>Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол. ATP>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
Найди контур своей монетки (диаметр)
Отгрызи лишнее
Посчитай моменты
Для произвольно повёрнутой монетки тоже самое
Найди контур своей монетки (диаметр)
Отгрызи лишнее
Посчитай моменты
Пересчитай моменты в угол.
Моменты лучше получать с помощью функций которые легко поворачивать на произвольный угол Типа Ylm
но можно и просто разложить в полярной системе координат и потом по свёртке или по какому-нить выразительному моменту определить угол.
ps: для равномерно белого круга таких моментов найти не удасться
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
Можно попробовать упростить шаблон до нескольких точек. Например, найти все острые углы. Или дырки у пуговицы.
Это делается наложением каких-то фильтров.
После чего — пытаешься сопоставить какую-нибудь точку повёрнутой монетки с точкой исходной, находишь угол, смотришь — совмещаются ли остальные точки.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
К>Можно попробовать упростить шаблон до нескольких точек. Например, найти все острые углы. Или дырки у пуговицы. К>Это делается наложением каких-то фильтров.
Самые устоичивые точки на изображении как известно минимумы и максимумы. Так что планирую какой-нибудь фильтр связанный с этим.
К>После чего — пытаешься сопоставить какую-нибудь точку повёрнутой монетки с точкой исходной, находишь угол, смотришь — совмещаются ли остальные точки.
Я пока что придумал следующее — переводить монетку в полярные координаты и истать совпадение там простым сдвигом по оси угла. Может я замудрил и можно
еще проще как-нибудь?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Всем добрый день!
ATP>>Возникла задача: ATP>>Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол. ATP>>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
А>Найди контур своей монетки (диаметр) А>Отгрызи лишнее А>Посчитай моменты
А>Для произвольно повёрнутой монетки тоже самое А>Найди контур своей монетки (диаметр) А>Отгрызи лишнее А>Посчитай моменты А>Пересчитай моменты в угол.
Какие моменты имеются ввиду? что то я в графике такое слышал но не уверен... можно поподробней?
А>Моменты лучше получать с помощью функций которые легко поворачивать на произвольный угол Типа Ylm А>но можно и просто разложить в полярной системе координат и потом по свёртке или по какому-нить выразительному моменту определить угол. А>ps: для равномерно белого круга таких моментов найти не удасться
... его и вертеть не нужно. Интересно всетаки про моменты — можно пожалуйста поподробней?
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Всем добрый день!
ATP>Возникла задача: ATP>Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол. ATP>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
ATP>P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
порезать монетку на половинки, для которых посчитать "центры тяжести". исходя из этого и данных эталона посчитать угол.
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Самые устоичивые точки на изображении как известно минимумы и максимумы. Так что планирую какой-нибудь фильтр связанный с этим.
главное чтобы фильтр был инвариантным вращению.
можно взять sift-дескрипторы, они привязывают сист.коорд. в точке экстремума к градиенту.
ATP>Я пока что придумал следующее — переводить монетку в полярные координаты и истать совпадение там простым сдвигом по оси угла. Может я замудрил и можно ATP>еще проще как-нибудь?
надо именно проще?
Здравствуйте, piAnd, Вы писали:
A>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Самые устоичивые точки на изображении как известно минимумы и максимумы. Так что планирую какой-нибудь фильтр связанный с этим. A>главное чтобы фильтр был инвариантным вращению. A>можно взять sift-дескрипторы, они привязывают сист.коорд. в точке экстремума к градиенту.
А можно ссылочку с чего начать. Google — что-то невнятное выдает на "Shift-descriptors". Или это части какого-то более известного метода?
ATP>>Я пока что придумал следующее — переводить монетку в полярные координаты и истать совпадение там простым сдвигом по оси угла. Может я замудрил и можно ATP>>еще проще как-нибудь? A>надо именно проще?
Да нет . Просто вы не поверите, но задача реальная. Используется в автомате по пришиванию пуговиц. Заказчик американец.
Здравствуйте, Leonidze, Вы писали:
L>порезать монетку на половинки, для которых посчитать "центры тяжести". исходя из этого и данных эталона посчитать угол.
А зачем на половинки?
Если рисунок достаточно не однородный есть такой вариант:
посчитать координаты гемоетрического центра монеты, и центров тяжести, до и после поворота.
Если же центры тяжести и геометрическей близки — можно попытаться вычленить рисунок монетки (пороговым сечением)
Здравствуйте, Кос, Вы писали:
Кос>Здравствуйте, Leonidze, Вы писали:
L>>порезать монетку на половинки, для которых посчитать "центры тяжести". исходя из этого и данных эталона посчитать угол. Кос>А зачем на половинки?
Кос>Если рисунок достаточно не однородный есть такой вариант: Кос> посчитать координаты гемоетрического центра монеты, и центров тяжести, до и после поворота. Кос> Если же центры тяжести и геометрическей близки — можно попытаться вычленить рисунок монетки (пороговым сечением)
А можно пожалуйста ссылочку на данную тему? Что за центры тяжести на картинке?
Здравствуйте, Neo27, Вы писали:
N>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Здравствуйте, Neo27, Вы писали:
N>>>Потом программно поворачивать изображение, которое получилось после поворота. N>>>И поворачивать до тех пор, пока изображение, которое мы поворачиваем программно не станет N>>>схожим с тем, что мы сохранили до начала поворота?
ATP>>Это лобовой способ который сразу же приходит в голову. На мой взгляд чрезчур медленный. Дело в том, что положение нужно высчитывать ну хотябы с точностью до градуса, а при таком подходе шаг будет очень маленьким, следовательно количество вычислений слишком большим.
N>Так ведь можно не весь рисунок крутить и сравнивать, а только некую полоску, тем самым сократится время обработки.
А как определить какую полоску сравнивать. Она ведь должна с большой вероятностью характеризовать угол на который повернуто изображение, не так ли?
Здравствуйте, piAnd, Вы писали:
A>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Самые устоичивые точки на изображении как известно минимумы и максимумы. Так что планирую какой-нибудь фильтр связанный с этим. A>главное чтобы фильтр был инвариантным вращению. A>можно взять sift-дескрипторы, они привязывают сист.коорд. в точке экстремума к градиенту.
ATP>>Я пока что придумал следующее — переводить монетку в полярные координаты и истать совпадение там простым сдвигом по оси угла. Может я замудрил и можно ATP>>еще проще как-нибудь? A>надо именно проще?
Как вы считаете такой способо будет работать:
1. Найдти на изображение екстремумы (например пусть буду максимумы)
2. Выделить из них N точек. Здесть у меня остается вопрос по какому критерию их выделять?
3. Вычислить для этих точек градиены.
4. Сравнить градиенты с исходными
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Да нет . Просто вы не поверите, но задача реальная. Используется в автомате по пришиванию пуговиц. Заказчик американец.
Так ёлы палы, сразу бы про пуговицы сказал. Там четыре или две дырки, казалось бы, не так уж сложно их найти на картинке? Это во-первых.
А во-вторых, имхо, пуговицы должны быть ориентированы на одежде одинаково — а не пришиты так, как они легли. Поэтому всё равно придётся решать задачу о физической ориентировке пуговиц, и проще всего это делать с помощью проволочных направляющих. Зачем здесь видеокамера и распознавание образов?
Да и с пуговицами такой вариант, конечно, не проканает. Но можно придумать другой. если пуговица 4-х дырочноя, то в четвертушке искать центр масс. вобщем можно както под конкретные задачи подстроится
Здравствуйте, Кодт, Вы писали:
ATP>>Да нет . Просто вы не поверите, но задача реальная. Используется в автомате по пришиванию пуговиц. Заказчик американец.
К>Так ёлы палы, сразу бы про пуговицы сказал. Там четыре или две дырки, казалось бы, не так уж сложно их найти на картинке? Это во-первых.
Зачем здесь видеокамера и распознавание образов?
Затем, что бывают однодырочные пуговицы (на ножке).
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Да нет . Просто вы не поверите, но задача реальная. Используется в автомате по пришиванию пуговиц. Заказчик американец.
К>Так ёлы палы, сразу бы про пуговицы сказал. Там четыре или две дырки, казалось бы, не так уж сложно их найти на картинке? Это во-первых. К>А во-вторых, имхо, пуговицы должны быть ориентированы на одежде одинаково — а не пришиты так, как они легли. Поэтому всё равно придётся решать задачу о физической ориентировке пуговиц, и проще всего это делать с помощью проволочных направляющих. Зачем здесь видеокамера и распознавание образов?
— честно, не знаю, мне ставят задачу, я пытаюсь решить. Насколько я понял пуговицы типа как на военной форме — никаких дырочек нет, есть только ушко. В зажим проваливается пуговица рисунком к камере в произвольном положении. Зажим может вертеться на +-180 градусов. С другой стороны подсовывается ткань к которой пришивать и там камеру не установить, насколько я понял.
Здравствуйте, piAnd, Вы писали:
A>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Как вы считаете такой способо будет работать:
ATP>>1. Найдти на изображение екстремумы (например пусть буду максимумы) ATP>>2. Выделить из них N точек. Здесть у меня остается вопрос по какому критерию их выделять? ATP>>3. Вычислить для этих точек градиены. ATP>>4. Сравнить градиенты с исходными
A>как-то он все-таки будет работать, но похоже, что в п.1 эктремумы будут "шуметь", если их искать влоб. A>Есть такая фигня, scale-space называется, в ней формулируются некоторые способы, похожие на ваш, выделяющие feature points, являющиеся инвариантными к плоскому вращению изображения, сдвигу и масштабу. A>Более близко к практике этот принцип инвариантности использован в sift (scale invariant feature transform) алгоритме. Если говорить в терминах ss, то в sift-е используются экстремумы функции нормализованного лапласиана, а проще говоря детекторы blob-структур, "округлых пятен", которые у пуговицы будут локализованы по краям и на рельефе внутри и иметь разные масштабы, а также самое большое "пятно" — сама пуговица. Эти экстремумы проходят "сито", как в п.2. A>По п.3 и 4 — это этап sift-а, соответствующий формированию дескрипторов, т.е. составлению гистограмм направлений градиентов в окрестных областях вокруг blob-"пятна".
A>Описание вот тут, (ссылки).
Я понял — SIFT — я подумал SHIFT — сорри.
Ок — звучит как то что нужно. Типа Scale-пирамиды строится и там уже выбираются точки с параметрами общими для всех масштабов, я правильно понял?
Нужно время чтобы посмотреть...
Нутром чую что для моего варианта можно все гораздо проще. Больно условия идеальные.
Здравствуйте, Кос, Вы писали:
Кос>Да и с пуговицами такой вариант, конечно, не проканает. Но можно придумать другой. если пуговица 4-х дырочноя, то в четвертушке искать центр масс. вобщем можно както под конкретные задачи подстроится
Заметил что у всех степеотип пуговицы — это пуговица от рубашки. здесь
Здравствуйте, Кос, Вы писали:
Кос>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Здравствуйте, Кос, Вы писали:
Кос>>>Здравствуйте, Leonidze, Вы писали:
L>>>>порезать монетку на половинки, для которых посчитать "центры тяжести". исходя из этого и данных эталона посчитать угол. Кос>>>А зачем на половинки?
Кос>>>Если рисунок достаточно не однородный есть такой вариант: Кос>>> посчитать координаты гемоетрического центра монеты, и центров тяжести, до и после поворота. Кос>>> Если же центры тяжести и геометрическей близки — можно попытаться вычленить рисунок монетки (пороговым сечением)
Непонял, их у изображения, что, несколько может быть?
ATP>>А можно пожалуйста ссылочку на данную тему? Что за центры тяжести на картинке? Кос>ссылочками не раполагаю, поищите сами. Могу вкратце объяснить
Кос>геометрический центр — суммируешь все координаты точек, относящихся к объекту (обычно это точки выше или ниже заданной яркости, т.е. монетка от фона должна отличаться яркостью своей), и делишь их на количество точек, вошедших в сумму. суммируешь — значит иксы складываешь с иксами, игрики с игриками.
Тут все понятно, все просто — центр один.
Кос>центр масс (я его "тяжести" обозвал, что, конечно неграмотно и неверно) — почти тоже самое но учавствуют яркости. т.е. сумируешь координаты, каждая из которых должна быть помножена на яркость пикселя. потом делишь всё это дело на суммарную яркость этих пикселей. т.е. Xцм = Хi*Bi/сумм(Bi) и для Y аналогично
А тут не совсем понял. Из формулы получается суммирование в весами — правильно? Вроде как только один центр получается.
А потом вы предлагаете по четырем этим центрам (2 до поворота и 2 после) вычислить угол — я правильно понимаю? А если центры совпадут?
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Здравствуйте, Кос, Вы писали:
Кос>>Да и с пуговицами такой вариант, конечно, не проканает. Но можно придумать другой. если пуговица 4-х дырочноя, то в четвертушке искать центр масс. вобщем можно както под конкретные задачи подстроится
ATP> Заметил что у всех степеотип пуговицы — это пуговица от рубашки. здесь
Мда, то с атомной промышленности фиг денег выбьешь на очередную системы автоматизации, то пуговицопришывочная промышленность богатеет. Сколько будет стоить ваш автомат? За сколько денег согласится бабушка сидеть и поворачивать пуговицы нужной стороной. Кстати, по нижнему ушку, можно механическим способом спозиционировать пуговицу всего в двух различных положениях. бабульке достаточно будет класть пуговички приблизительно головами орла вверх.
Здравствуйте, Leonidze, Вы писали:
L>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Всем добрый день!
ATP>>Возникла задача: ATP>>Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол. ATP>>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
ATP>>P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
L>порезать монетку на половинки, для которых посчитать "центры тяжести". исходя из этого и данных эталона посчитать угол.
еще вариант — так как изображение круглое, "развернуть" его считывая яркости пикселей от центра по радиусу, например последовательно через каждый градус (можно меньше/больше в зависимости от сложности изображения). Получим "развертку" — характерный набор из N векторов, сравнивая которые с эталоном определить угол (т.е. если "шаблон эталона" близок к полученному начианя с K-ой позиции, надо на -K*шаг угла повернуть).
Можно немного усложнить сканирование — усреднять значения для углов от X до (X+dX) на одинаковом расстоянии. Получим меньшее кол-во выходных данных, правда при этом снизится точность позиционирования. Можно все параметры (шаг угла, число сканируемых точек и т.п.) оценивать по эталону.
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Всем добрый день!
ATP>Возникла задача: ATP>Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол. ATP>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
ATP>P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
Если уверен, что ось поворота монетки точно совпадает с центром кадра, то угол поворота обычно ищут таким образом. Задаются точностью поиска поворота. Пусть это e=0.5 градуса. Затем разбивают эталонный и второй кадры на 360/e=720 секторов с центром в центре кадра и ограниченные некоторой окружностью, вписанной в кадр. В своём случае в радиус этой окружности можно взять равным радиусу монетки. Затем считают сумму значений пикселей в каждом секторе. В результате получается для каждого кадра последовательность из 720 отсчётов. Считается корреляционная функция между этими последовательностями и смещение её максимума от 0 определяет поворот монетки, т.е., если максимум корр. ф-ции находится в точке x=23, то поворот монетки=23*0.5=11.5 град. Способ тоже не быстрый, но он гораздо быстрее, чем 720 раз сравнивать непосредственно кадры, причём 720 раз грамотно кадр повернуть на заданный угол тоже задача ресурсоёмкая.
Если нет уверенности, что ось поворота монетки точно совпадает с центром кадра, то в таких случаях обычно угол поворота ищут по повороту амплитудного спектра, так как он инвариантен к сдвигу исходного кадра и угол его поворота равен углу поворота кадра. Правда будут влиять краевые эффекты, поэтому лучше предварительно обнулить фон или умножить кадр на оконную функцию. Только не забудь, что так ты вычислишь поворот кадра относительно его центра. Поэтому далее надо будет компенсировать этот поворот, определить гориз. и верт. смещение кадров, и пересчитать поворот монетки относительно её центра.
Здравствуйте, Кос, Вы писали:
Кос>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Здравствуйте, Кос, Вы писали:
Кос>>>Да и с пуговицами такой вариант, конечно, не проканает. Но можно придумать другой. если пуговица 4-х дырочноя, то в четвертушке искать центр масс. вобщем можно както под конкретные задачи подстроится
ATP>> Заметил что у всех степеотип пуговицы — это пуговица от рубашки. здесь
Кос>Мда, то с атомной промышленности фиг денег выбьешь на очередную системы автоматизации, то пуговицопришывочная промышленность богатеет. Сколько будет стоить ваш автомат? За сколько денег согласится бабушка сидеть и поворачивать пуговицы нужной стороной. Кстати, по нижнему ушку, можно механическим способом спозиционировать пуговицу всего в двух различных положениях. бабульке достаточно будет класть пуговички приблизительно головами орла вверх.
Видимо американская бабушка обходится дороже камеры
Здравствуйте, Кос, Вы писали:
ATP>>А потом вы предлагаете по четырем этим центрам (2 до поворота и 2 после) вычислить угол — я правильно понимаю?
Кос>Да, всё верно понимаете.
ATP>>А если центры совпадут? Кос>Тогда не получится определить Кос>Зависит от того, что за рисунок. Если элементы рисунко сильно смещены в куда-то, то будет хорошо, а если вроде как вокруг центра нарисовано — плохо, надо искать другой способ.
Все понял. Спасибо большое за советы. Тепер буду все пробовать. Напиши позже что реально выходит.
Здравствуйте, i46217, Вы писали:
I>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Всем добрый день!
ATP>>Возникла задача: ATP>>Берем монетку и снимаем её камерой в нормальном положении (так что бы можно было прочитать номинал) на произвольном фоне. Ось поворота монетки совпадает с центром кадра. Назовем углом d угол поворота монетки относительно центра. Назовем эту картинку эталонной и условно будем считать что d = 0. Поле этого представим что монетку произвольно поворачивают на любой угол. ATP>>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
ATP>>P.S. просьба тривиальный случай с поворотом шаблона на кратные градусы не рассматривать
I>Если уверен, что ось поворота монетки точно совпадает с центром кадра, то угол поворота обычно ищут таким образом. Задаются точностью поиска поворота. Пусть это e=0.5 градуса. Затем разбивают эталонный и второй кадры на 360/e=720 секторов с центром в центре кадра и ограниченные некоторой окружностью, вписанной в кадр. В своём случае в радиус этой окружности можно взять равным радиусу монетки. Затем считают сумму значений пикселей в каждом секторе. В результате получается для каждого кадра последовательность из 720 отсчётов. Считается корреляционная функция между этими последовательностями и смещение её максимума от 0 определяет поворот монетки, т.е., если максимум корр. ф-ции находится в точке x=23, то поворот монетки=23*0.5=11.5 град. Способ тоже не быстрый, но он гораздо быстрее, чем 720 раз сравнивать непосредственно кадры, причём 720 раз грамотно кадр повернуть на заданный угол тоже задача ресурсоёмкая.
I>Если нет уверенности, что ось поворота монетки точно совпадает с центром кадра, то в таких случаях обычно угол поворота ищут по повороту амплитудного спектра, так как он инвариантен к сдвигу исходного кадра и угол его поворота равен углу поворота кадра. Правда будут влиять краевые эффекты, поэтому лучше предварительно обнулить фон или умножить кадр на оконную функцию. Только не забудь, что так ты вычислишь поворот кадра относительно его центра. Поэтому далее надо будет компенсировать этот поворот, определить гориз. и верт. смещение кадров, и пересчитать поворот монетки относительно её центра.
Все что вы описали на мой взгляд и есть перевод в полярную систему координат на мой вгляд. Только в ней все гораздо проще искать. Я так и буду делать, и уже писал об этом. Первое что планирую — это перевод в полярную систему координат или лог-полярную, тогда появится инвариант еще и к размеру пуговицы.
Можно:
Поставить монетку в правильное положение.
Взять контрольную окружность. Например с радиусом, равным половине монеты.
Вычислить "средний цвет" на окружности X.
Посчитать длины получившихся интервалов: чёрный, белый, чёрный, белый, ...
Получиться последовательность чисел.
Затем каждый раз — вычислять эти же отрезки и обнаруживать — где же теперь эта последовательность. Находить её "начало" и считать расстояние от "правильного начала". Пусть оно = l, а радиус R.
Тогда угол. = 2*arcsin(l/(2R)), либо 2pi минус этот угол.
Контрольных окружностей можно провести несколько (с разными радиусами).
Re[3]: Положение монетки
От:
Аноним
Дата:
10.04.08 12:19
Оценка:
Я другой аноним.
ATP>Какие моменты имеются ввиду? что то я в графике такое слышал но не уверен... можно поподробней?
Это вычислительная алгебра и геометрия — основа матмоделирования. Полярные координаты, угловые скорости и преобразования из комплексного вида в косинусный.
А>>ps: для равномерно белого круга таких моментов найти не удасться
В этом случае имеется ввиду белый шум или монотонность определенного порядка, при которой значение функции равномерно и непрерывно.
ATP>... его и вертеть не нужно. Интересно всетаки про моменты — можно пожалуйста поподробней?
Момент тут один — недостаток знаний в фундаментальной области.
Здравствуйте, Аноним, Вы писали:
А>Я другой аноним.
ATP>>Какие моменты имеются ввиду? что то я в графике такое слышал но не уверен... можно поподробней? А>Это вычислительная алгебра и геометрия — основа матмоделирования. Полярные координаты, угловые скорости и преобразования из комплексного вида в косинусный.
А>>>ps: для равномерно белого круга таких моментов найти не удасться А>В этом случае имеется ввиду белый шум или монотонность определенного порядка, при которой значение функции равномерно и непрерывно.
ATP>>... его и вертеть не нужно. Интересно всетаки про моменты — можно пожалуйста поподробней?
А>Момент тут один — недостаток знаний в фундаментальной области.
Вы всегда так помогаете другим людям, упрекая их в недостатках знаний? Естественно если бы все были гуру во всех областях, то и rsdn не нужет был бы.
Здравствуйте, Аноним, Вы писали:
А>Вместо того чтобы кратко и максимально технически грамотно сформулировать свой вопрос, вы умудрились занять десятки строк текста и отнять массу времени у людей.
Я уже про это писал, если бы я был в теме и мог грамотно сформулировать свой вопрос, то наверное и вопроса самого не было бы.
А>На будущее: любые вопросы осмыслите, переведите в лаконичную технически корректную форму и задайте их в первую очередь общепризнанным авторитетам в предметной области. Например Кодт и прочие.
Только не нужно прикрыватся авторитетами, отвечайте за себя.
А>P.S. В книжке Гонсалес, Вудс "Цифровая обработка сигнала" даны исчерпывающие сведения о вашей проблематике. Перевести прагматику в алгоритм не составит труда. И не забудьте это сделать, чтобы компенсировать времененные затраты на вас.
У меня есть эта книга и я ее спокойно и медленно читаю, вот только задача должна быть решена еще вчера, поэтому и приходится задавать вопросы в форум.
Можно подумать что я заставляю людей отвечать, а не они делают это добровольно. И если грамотно разобраться, то это вы отнимаете время у меня своими безсмысленными ответами, которые мне никак не помогут решить задачу в кратчайшие сроки.
И не забудьте в следующий раз, когда вы увидите технически неграмотно сформулированный вопрос тима моего, просто пропустите его и не тратьте свое и чужое время.
Re[7]: Положение монетки
От:
Аноним
Дата:
10.04.08 13:38
Оценка:
Другой аноним.
ATP>Я уже про это писал, если бы я был в теме и мог грамотно сформулировать свой вопрос, то наверное и вопроса самого не было бы.
Судя по вашей специальности вы в теме. Вопрос первого семестра первого курса.
ATP>Только не нужно прикрыватся авторитетами, отвечайте за себя.
Прикрываться нужно тому кто не знает ответа и как его искать. Обычно эти люди прикрывают. Это общеизвестно.
ATP>У меня есть эта книга и я ее спокойно и медленно читаю, вот только задача должна быть решена еще вчера, поэтому и приходится задавать вопросы в форум.
Очень медленно и неэффективно читаете.
ATP>Можно подумать что я заставляю людей отвечать, а не они делают это добровольно. И если грамотно разобраться, то это вы отнимаете время у меня своими безсмысленными ответами, которые мне никак не помогут решить задачу в кратчайшие сроки.
Это практически ваша задачка с готовыми ответом. http://is.ifmo.ru/download/11-08-2007_pervushin_neural.pdf
При прочтении вспомните собственную бессмысленность полученного образования. Мои ответы — это удочка.
ATP>И не забудьте в следующий раз, когда вы увидите технически неграмотно сформулированный вопрос тима моего, просто пропустите его и не тратьте свое и чужое время.
Обычно так все и делают.
Здравствуйте, Аноним, Вы писали:
А>Я другой аноним.
А>Заметим что спрашивающий является специалистом в области "Программист, графики и видео".
А>Итак, что вы знаете о структуре изображения и топологии? Известно ли вам о пороговых значения, битовых масках и матричных преобразованиях? Методах обнаружения: пересечением, изменяющегося градиента, способах линеаризации при замкнутых пространствах; Использовали ли вы винеровскую фильтрацию? Каким образом вы собираетесь регистрировать поток видеоинформации?
А>P.S. Если вы не против я на днях я загляну к вашему декану и побеседуем о вашей специальности.
Здравствуйте, Аноним, Вы писали:
А>Другой аноним.
А>Прикрываться нужно тому кто не знает ответа и как его искать. Обычно эти люди прикрывают. Это общеизвестно.
Бред какой... Тем кто не знает ответа нужно спрашивать у тех кто знает точный ответ. 8 лет я занимаюсь программированием профессионально и этот способ всегда работает в отличие своих велосипедов подчерпнутых из теоритических знаний. Вы мне напоминаете одного занудного препода, который все знал (теоретически) и любого мог заткнуть, но как дело доходило до реализации почему-то все либо не работало как надо, либо работало условно в тепличных условиях.
ATP>>У меня есть эта книга и я ее спокойно и медленно читаю, вот только задача должна быть решена еще вчера, поэтому и приходится задавать вопросы в форум.
А>Очень медленно и неэффективно читаете.
Моя книга — как хочу так и читаю.
ATP>>Можно подумать что я заставляю людей отвечать, а не они делают это добровольно. И если грамотно разобраться, то это вы отнимаете время у меня своими безсмысленными ответами, которые мне никак не помогут решить задачу в кратчайшие сроки.
А>Это практически ваша задачка с готовыми ответом. А>http://is.ifmo.ru/download/11-08-2007_pervushin_neural.pdf А>При прочтении вспомните собственную бессмысленность полученного образования. Мои ответы — это удочка.
Все ясно — опять нейронныйе сети. Скоро 2 + 2 будем с помощью них считать. Слушайте вы не преподаватель ли случайно, а? Может вы меня со своим студентом перепутали, учите меня в повелмтельном тоне, что мне делать... В общем не дружелюбный у вас к людям подход какой-то.
ATP>>И не забудьте в следующий раз, когда вы увидите технически неграмотно сформулированный вопрос тима моего, просто пропустите его и не тратьте свое и чужое время. А>Обычно так все и делают.
Слушайте а почему же вы ко мне цепляетесь. Может у вас весеннее обострение, может с женщинами проблеммы... давайте лучше поговоим об этом, и поможем вам выйдти из этой затруднительной ситуации, глядишь и настроение улучшется...
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Я понял — SIFT — я подумал SHIFT — сорри. ATP>Ок — звучит как то что нужно. Типа Scale-пирамиды строится и там уже выбираются точки с параметрами общими для всех масштабов, я правильно понял? ATP>Нужно время чтобы посмотреть...
в статье D.Lowe по sift-у приводится метод сопоставления группы особых точек, что-то типа feature tracking (слежения), которое в случае круглого пятна с известным радиусом упростится до минимизации суммы разностей характеристик точек, зависящей от одного угла, как мне кажется.
ATP>Нутром чую что для моего варианта можно все гораздо проще. Больно условия идеальные.
Ну да, главное там извлечение инвариантов, можно при этом не парится с построением "высокой" пирамиды, а оставить два-три уровня.
Ничего не хочу сказать плохого про автора, но порой смешно читать работу. Например такая цитата: "Из рассмотрения рис. 16 следует что предложенная система не уступает по функциональности коммерческим аналогам". Это при наблюдении единственного автомобиля в практически идеальных условиях! Есть и другие наивные (поэтому и смешные) высказывания. Видимо, наука и практика у нас ещё находятся далеко друг от друга.
Re: Положение монетки
От:
Аноним
Дата:
13.04.08 20:15
Оценка:
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Нужно придумать алгоритм вычисления угла d после поворота монетки. У кого какие идеи?
Для начала перевести все в полярные координаты. Там поворот будет сдвигом на группе, после преобразования Фурье он превратиться в домножение на характер. Что бы его извлечь нужно результат преобразований эталона и картинки поделить поточечно и сделать обратное преоразование Фурье. По максимум в том, что получилось можно будет определить угол поворота и коэффициен растяжения, если картинку, к тому же, была масштабированна. Детали так с ходу не помню
Здравствуйте, piAnd, Вы писали:
A>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Я понял — SIFT — я подумал SHIFT — сорри. ATP>>Ок — звучит как то что нужно. Типа Scale-пирамиды строится и там уже выбираются точки с параметрами общими для всех масштабов, я правильно понял? ATP>>Нужно время чтобы посмотреть... A>в статье D.Lowe по sift-у приводится метод сопоставления группы особых точек, что-то типа feature tracking (слежения), которое в случае круглого пятна с известным радиусом упростится до минимизации суммы разностей характеристик точек, зависящей от одного угла, как мне кажется.
ATP>>Нутром чую что для моего варианта можно все гораздо проще. Больно условия идеальные. A>Ну да, главное там извлечение инвариантов, можно при этом не парится с построением "высокой" пирамиды, а оставить два-три уровня.
Спасибо большое за совет, буду смотреть все внимательно, экспериментироваить. Благо заказчик неожиданно перенес сроки на две недели позже, так что время есть.