Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2010, 14:05   #1
runaway
Новичок
Джуниор
 
Регистрация: 17.07.2010
Сообщений: 10
По умолчанию Векторная диаграмма по растровой картинке

Здравствуйте, уважаемые программеры!

Ракетомодельное сообщество будет очень признательно той творческой личности, которая чисто из любви к искусству решит описанную ниже задачу.

Есть растровое изображение осциллограммы... на самом деле это НЕ осциллограмма - кому интересны подробности, прошу сюда:

http://balancer.ru/_bors/igo?o=forum_post__2204238

По подобной растровой картинке (по самым ярким пикселам, либо по геометрическим центрам ГРУПП самых ярких пикселов) надо автоматически построить векторную ломаную, чтобы итоговый файл читался векторными чертилками (Компас, SW, etc.)

А вообще САМАЯ наифинишная задача - это определить ПЛОЩАДЬ, ограниченную: сверху - диаграммой, снизу - горизонтальной осью графика, с боков - перпендикулярами, соединяющими концы диаграммы с горизонтальной осью графика. Если программа будет уметь считать эту площадь, то совместимость с векторными форматами популярных САПР не нужна.
Изображения
Тип файла: jpg diagram.jpg (11.0 Кб, 71 просмотров)
runaway вне форума Ответить с цитированием
Старый 17.07.2010, 15:16   #2
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

почему оно такое полосатое? - оно всегда должно быть таким полосатым?
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 17.07.2010, 16:33   #3
runaway
Новичок
Джуниор
 
Регистрация: 17.07.2010
Сообщений: 10
По умолчанию

Приведённая картинка состоит из ста вертикальных полосок, т.е. представляет собой КОЛЛАЖ выстроенных в ряд фотографий (экспорт из VDub заданного диапазона кадров предварительно обрезанного в нужный размер видео). Коллаж формируется простеньким vbs-скриптом.

Т.е. полосатость будет присутствовать всегда. Она мешает?
runaway вне форума Ответить с цитированием
Старый 17.07.2010, 16:45   #4
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

к вертикали в данном случае не имеет отношение

разброс графика(это-же график который рисуется лазером - я правильно понял?) надо учитывать по приближенным цветам? или по непрерывности самого яркого участка?
горизонтальные линии а картинке - это косяк камеры? или рефракция света?

поправка:
в действительно ставит в тупик график в виде прямой линии
Non est culpa vin, sed culpa bibentis

Последний раз редактировалось Korben5E; 17.07.2010 в 16:49.
Korben5E вне форума Ответить с цитированием
Старый 17.07.2010, 17:50   #5
runaway
Новичок
Джуниор
 
Регистрация: 17.07.2010
Сообщений: 10
По умолчанию

На каждой из сотни вертикальных узких полосок-кадров приведённого выше коллажа - лазерная точка. По моему крестьянскому разумению прога должна:



1. Определить на первой слева полоске самый яркий пиксел (или геометрический центр группы самых ярких пикселов с одинаковой яркостью)

2. Замаркировать результат п.1 точкой (координатами пиксела).

3. Перейти к следующей полоске и повторить пп. 1-2 энное число раз

4. По полученным точкам (координатам) построить ломаную линию, представляющую собой векторный график, пригодный для того, чтобы посчитать площадь, им ограниченную.



А может здесь вообще другой алгоритм нужен, и всё описанное - это всего лишь инерция моего человеческого мышления. Может быть вашей проге будет рациональнее считать число пикселов от первого нижнего пиксела до самого яркого пиксела на каждой из полосок... А может ещё как-то иначе.

Основная задача - посчитать ПЛОЩАДЬ, ограниченную графиком и горизонтальной осью. Эта площадь численно равна суммарному импульсу ракетного мотора. Неплохо было бы ещё возвращать значения максимальной тяги (координату "Y" самой высокой точки графика) и времени (координату "Х"), когда то или иное событие на графике имело место быть.


> горизонтальные линии а картинке - это косяк камеры? или рефракция света?

Нет, это следствие того, что картинка составлена из множества узких вертикальных полосок. Приведённая картинка - КОЛЛАЖ стоящих впритык друг к дружке узких вертикальных полосок (на этой картинке их сто штук). И если на полоске, допустим, есть тёмная точка (ведь это всего-навсего фотография кусочка листа писчей бумаги), то она будет повторяться на каждой последующей полоске, образуя тёмную горизонтальную линию.

Т.е. это не косяк камеры, это косяк предложенной технологии. Надеюсь, что косяк этот некритичен - градиент яркости большой, и тёмные горизонтальные полосы имхо никак не должны мешать процессу поиска самого яркого пиксела на вертикальной полоске-кадре.


> ... ставит в тупик график в виде прямой линии

Это я виноват; согласен. Но приведённое изображение - лишь самая первая проба, иллюстрация к самой ИДЕЕ графической обработки результатов измерения суммарного импульса при помощи обыкновенной лазерной указки (за $1) и упругого элемента в виде обломка ножовочного полотна (забесплатно). Технология предлагается как дешёвая и доступная ВСЕМ альтернатива дорогостоящим электронным тягомерным стендам.

Реальный график, понятно, НЕ будет выглядеть как горизонтальная прямая - чаще всего это будет либо П-образный горб с невидимыми фронтами и весьма прихотливо изогнутой горизонтальной частью, либо (в случае неудачи) ^-образный горб (медленный выход на режим и медленный сход с режима). Если взрыв - импровизированный стенд частично прекращает своё существование, и график просто обрывается. В этом случае прога должна вернуть время работы до взрыва, максимальную тягу и тот кусок импульса, который двигатель успел отработать.

Одна вертикальная полоска-кадр - это 0,04 секунды времени: скорость съёмки известна, весьма стабильна и равна 25 кадрам в секунду.

Последний раз редактировалось runaway; 17.07.2010 в 18:04.
runaway вне форума Ответить с цитированием
Старый 17.07.2010, 18:02   #6
runaway
Новичок
Джуниор
 
Регистрация: 17.07.2010
Сообщений: 10
По умолчанию

Приношу свои извинения за обильные тексты. Короче не получается.
runaway вне форума Ответить с цитированием
Старый 17.07.2010, 18:03   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

эта что-ли технология
Цитата:
Купил сегодня указку, немного поэкспериментировал. Вкратце: результаты обнадёживают, и даже более чем. Основные характеристики наклёвываются такие: рабочий ход УЭ на нагрузке 20 кг - два миллиметра; рычаг 50 мм; дистанция три метра; размах шкалы 120 мм (20 кг); разрешающая способность ~ 80 г.

Бумажная шкала крепится перед камерой на расстоянии около 30 см, на выносной лёгкой штанге типа пюпитра. Лазерное пятно просвечивает сквозь бумагу, и на фоне делений шкалы считывается камерой. Таким образом, камера и шкала объединяются в единый узел, закрепляемый на штативе (треноге).

Последовательность кадров, представляющая собой видеоролик прожига, экспортируется программой "Виртуал Дуб" как последовательность картинок. Каждая картинка обрезается таким образом, чтобы было видно только пятно и узкий столбик делений шкалы (миллиметра два шириной); т.е. одна фотография будет представлять собой полоску 120 х 2 мм. Далее все кадры монтируются в единое поле, и тем самым достигается развёртка профиля тяги во времени вида "один кадр = 1/25 с".


Замеченные недостатки:

1. Камера фиксирует только шкалу; на само действо не хватает глубины резкости.
2. Примерно пятьдесят - сто кадров придётся обрезАть вручную, что неудобно и утомительно. Никто ничего не посоветует? Интересуют прежде всего готовые решения. Задачу можно сформулировать так: нужно обрЕзать по заданному шаблону энное количество картинок в папке и соединить всё в одно изображение. Желательно парой кликов.
Цитата:
Осталось только автоматизировать коллажирование: слепить все полоски в одну картинку графика одним же кликом.

Эксель я не планирую использовать - долго и незачем. Чтобы посчитать ньютон-секундную площадь кривули, я буду применять свою любимую чертилку "Компас". Сейчас уже пошли компасные сборки в одном-едином файле-екзешнике - очень удобно и компактно (без библиотек, ключей защиты, левых плугинов и прочей лабуды). Инсталляции не требуется. Правда есть там пока слегка корявые моменты, но прогресс идёт семимильными шагами.

Как считать в "Компасе" площадь: на каждой лазерной точке ставим точку сплайна (используем картинку в качестве фона; сто точек займёт минуты две максимум), и парой кликов вызываем готовое значение площади криволинейной фигуры, ограниченной диаграммой и осью времени...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.07.2010, 18:11   #8
runaway
Новичок
Джуниор
 
Регистрация: 17.07.2010
Сообщений: 10
По умолчанию

Да, это мои посты на Ракетомодельном. Коллаж уже сделали - мир не без добрых людей. Надо бы двигать далее, к логическому концу.
runaway вне форума Ответить с цитированием
Старый 17.07.2010, 18:21   #9
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

я типа на некоторых условиях согласен сделать все... т.к. ранее работал в НИИ и понимаю все проблемы

Цитата:
Сообщение от runaway Посмотреть сообщение
На каждой из сотни вертикальных узких полосок-кадров приведённого выше коллажа - лазерная...

(тут много написано что я и так понял...)

...кадрам в секунду.
значит так....

1. горизонтальные линии не относятся к коллажу вертикальных линий(утверждение)
2. вы гарантируете что график определяется именно самой яркой точкой в вертикали?(вопрос)
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 17.07.2010, 19:00   #10
runaway
Новичок
Джуниор
 
Регистрация: 17.07.2010
Сообщений: 10
По умолчанию

По порядку.

Огласите ваши условия!

Копирайт - всё, что реально смогу. Каждая собака на Ракетомодельном будет знать вас в лицо, смотреть вам в рот и ходить на задних лапках (включая меня первого). Ибо есть и другие проекты по вашей части. Если вас это заинтересует, конечно.

Деньги - ну, тут сами понимаете... Всё-таки это хобби, а потому - водка + закуска = скромная, но достойная поляна в денежном эквиваленте (через карту ПриватБанка).


> 1. горизонтальные линии не относятся к коллажу вертикальных линий (утверждение)

Это артефакт коллажирования, который должен игнорироваться.


> 2. вы гарантируете что график определяется именно самой яркой точкой в вертикали? (вопрос)

Ответ: не всегда. Возможна неопределённость: чересчур быстрые перемещения лазерного пятна по вертикали отображаются не в виде точек, а в виде треков - вертикальных монояркостных отрезков длиной несколько десятков миллиметров (яркость этих отрезков относительно хорошо остановленного пятна несколько понижена, но тем не менее их границы чётко обозначены и прекрасно видны невооружённым глазом). Прога должна уметь вычислять вертикальные координаты СЕРЕДИН таких отрезков, и принимать их за точки графика.

Экстремальный случай - ПОЛНОЕ отсутствие градации яркости на кадре-вертикали: выдержка камеры чересчур длинна для того, чтобы остановить чересчур быстрое пятно ДАЖЕ в виде отрезка. В этом случае монояркостный кадр-вертикаль игнорируется, и следующей координатой (следующей точкой графика) считается ПЕРВАЯ следующая, которую удалось определить алгоритму. Количество пропусков (пустых кадров-вертикалей с равномерно размазанным по всей их высоте пятном) имхо тоже должно возвращаться, чтобы пользователь смог оценить степень достоверности полученного значения суммарного импульса. Хотя это и так будет видно... Короче, это всё нюансы.

Вам, чувствую, не помешал бы РЕАЛЬНЫЙ профиль тяги, полученный с помощью этой технологии... Но, к сожалению, пока таковым не располагаю.

Последний раз редактировалось runaway; 17.07.2010 в 19:08.
runaway вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Векторная графика AnReykfi Помощь студентам 0 15.05.2010 14:10
векторная графика. квадрат varelik Мультимедиа в Delphi 18 07.09.2009 22:25
Векторная графика в C++ Builder 6 Max2114 C++ Builder 3 19.01.2009 14:56
Программа для работы с растровой графикой.(Delphi 7) strS Помощь студентам 2 19.01.2009 11:58