Giter Site home page Giter Site logo

wissance / 2dimageprocessing Goto Github PK

View Code? Open in Web Editor NEW
11.0 6.0 5.0 37.78 MB

2d Images processing system with FPGA (Zynq 7k) from two dragster linescanner (DR-2k-7)

License: GNU General Public License v2.0

Tcl 0.65% Verilog 10.73% VHDL 55.91% C 11.98% HTML 18.63% SystemVerilog 0.02% Coq 0.09% SuperCollider 0.17% C++ 1.55% Makefile 0.05% Assembly 0.13% CartoCSS 0.01% TeX 0.07%
dr-2k-7 2d image-processing frequency-analysis optical-measurements dragster awaiba cmosis 2d-scaner frequency-measurment

2dimageprocessing's Introduction

2DImageProcessing

2d Images processing system from dragster/cmosis/awaiba (DR-2k-7) linescanner Image is processing as light switching on selected pixels with frequencies that belongs to defined range. Time of each frequency is measuring

2dimageprocessing's People

Contributors

evillord666 avatar veryniceguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

2dimageprocessing's Issues

Тест на frequency_analyzer_synch

frequency_analyzer_synch метод для циклического запуска в порядке очередности (сначала первый, затем второй).Необходимо написать тест для этого модуля.

Полноценная реализация анализатора частот

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

  1. Настройка всех параметров всех анализаторов частот (#7)
  2. Выбор значения из пачки пикселей для сравнения с порогом (#15)
  3. Калибровка для выбора порога, для которого эффективность максимальна (#14)

HDL-Код, в котором реализованы данные задачи необходимо отладить. После завершения работы над этими задачами эффективность определения частот, вероятно, увеличится.

Сейчас FPS составляет ориентировочно 45-50 кГц, но, на наш взгляд, есть ряд проблем препятствующих достижению требуемых от изделия характеристик:

  1. Низкое качество макета, на котором стоит ПЛИС:
    а) "звон" по большинству линий. неизвестно с чем это может быть связано, но на осциллограммах видны периодические помехи на большинстве линий
    б) джиттер на клоках (плавают фазы клоков или иначе размазывается момент фронта и среза импульсов)
    в) проводной шлейф, возможно проблемы с дорожками на самой плате: 50 МГц на двух линиях, 10 МГц еще на одной, запросто могут создавать помехи на линиях TAPA. Есть подозрения, что помехоустойчивость схемы не достаточна для наших задач.

На данный момент FPS составляет 45-50 кГц.

  1. Минимальное время следующего чтения на клоке 50 МГц = 1040 + 12 клоков = 21 мкс, для, например, 9 кГц, это составляет 20%, что совсем далеко от 1% требуемого по ТЗ ( уменьшить это время можно путем увеличения клока и то не бесконечно а лишь до 80-100 МГц). Это и есть наша погрешность определения частоты ( 21мкс/111мкс, 111 - период для 9кГц).

  2. Распространение света по поверхности Dragster (в независимости куда светишь теми же 5 кГц, они определяются с разной эффективностью), это значит, что теоретически при частотах в перекрывающихся с учетом погрешности пределах, будет доп. погрешность.

  3. Максимальная эффективность регистрации излучения Dragster не превышает 80%, возможно, в каких-то случаях при большой чувствительности к порогу (а сейчас именно так, т.к. среднее еще не отлажено полностью) и флуктуациях эффективности регистрации Dragster мы также можем получить уменьшение вычисляемого времени действия частот.

  4. Отсутствие эталонных условий проведения эксперимента, меняется освещенность и т.п., т.е. мы не можем однозначно сказать влияет ли окружающая обстановка на результаты или нет, при отсутствии излучения лазера мы, конечно, ничего не регистрируем, но обстановка может влиять синергетически с работой лазера.

  5. Так как нам физически доступен только один Tap, значение каждого второго пиксела теряется. Отсюда возникает масса вопросов относительно общей эффективности и целесообразности расчета среднего значения.

  6. Производитель сенсора уведомил нас о том что сенсор не был спроектирован для работы с лазером и они не несут никакой ответственности за возможные повреждения.

  7. Опираясь на информацию полученную из официальной спецификации можно сделать вывод что сенсор нечувствителен к излучению с требуемой длиной волны.

Что касается самого алгоритма, то он до безобразия прост: считаем тики пока значение интенсивности для данной группы пикселей не поменялось с 1 на 0 (в данном случае подразумевается интенсивность за вычетом порога, если превышает то 1, если нет - 0) и оцениваем попадание полученных полупериодов излучения в один из двух частот с учетом погрешности определения частот.

Написать тестбенчи на все модули

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

Альфа версия в дебаг режиме

Альфа версия должна содержать:

  1. Запись и чтение конфигурации драгстеров

  2. Получение данных от самих драгстеров и анализ времен действия частот

  3. Точная работа самого анализатора (думаю, что частоты должны определять с погрешностью до +-1% (не знаю реализуемо ли это)).

Синхронный резет

Нам необходимо переключить ProcResetSystem на синхронный сброс, но при этом нужно решить нужны ли нам доп сбросы на FCLK1, FCLK2.

Способы анализа частот

Поскольку случай у нас специфический, алгоритмы анализа изображений по образцу нам не подходят ( у нас относительно мало точек за 500 мкс), поэтому придется сочинять что-то самим. Я думаю, что можно сделать следующее:
по сути нам нужно одну точку, где частота перепрыгнула и если верить таблице с отклонениями и картике с разверткой, то при работе в той области поля управления у нас нет частот f4 и f2 (хотя с может быть и не так понял,может это только пример). По-хорошему, погрешность нужно уменьшить, может быть получится ее уменьшить взяв несколько периодов и поделить на число периодов (но данное предложение не учитывает зависимость от начальной фазы сигнала). Зависимость от фазы можно прикинуть написав консольное приложение на С++ и взять стартовую точку в начале, в середине и в конце полупериода 0 и 1 и посчитать даст ли нам такая математика что-то или нет. Но опять же поскольку в ПЛИС очень плохо с делением, то брать можно только число периодов степени двойки т.е. 1,2,4 или 8. Пока больше особых предложений нет. И еще один момент, давайте считать все для текущего случая для ридаута в 21 мкс.

Добавить новую команду в image_capture_manager

Думаю, стоит добавить новую команду в image_capture_manager -> RESET и вызывать ее в коде перед инициализацией экземпляра класса ImageCaptureManager. Это нам позволит контролировать сброс FPGA. С этой командой должен быть связан порт, который будет связан с aux_reset_in.

Сбор значений множества пикселей для усреднения

Необходимо реализовать алгоритм фильтрации (калибровки на лету).

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

Параметры анализатора частот

Вероятно, потребуется задавать параметры анализатора частот через AXI или каким-то другим способом, например, через калибровку. На первый взгляд, такими параметрами являются

  1. Сами частоты (в Герцах)

  2. Отклонение каждой из частот (на данный момент отклонение общее +-10%)

  3. Частота вращения диска (в Герцах)

  4. Порог срабатывания Dragster

  5. Ширину области "пикселя"

Точность анализатора частот

В процессе работы мы оцениваем частоты из диапазона 9-20 кГц, время сканирования линейки на 50Мгц - 20нс * 1024 = 20,48мкс, соответственно это время и является погрешностью при измерении отдельного пикселя, что является большой проблемой. т.к. при такой погрешности измерение частот это большой вопрос.

Проверка частотного детектора

В стэндалон приложении получены первые результаты детектирования частот:

Frequency analyzer 0 rised 536 times
Frequency analyzer 1 rised 539 times

Frequency analyzer 0 pixel0 frequency 0 8896512
Frequency analyzer 0 pixel0 frequency 1 0
Frequency analyzer 0 pixel1 frequency 0 -1923330142
Frequency analyzer 0 pixel1 frequency 1 0
Frequency analyzer 0 pixel2 frequency 0 0
Frequency analyzer 0 pixel2 frequency 1 0

Соответственного 8896512 - число 100 МГц тиков, которые уложились во время действия частоты 5 кГц (прерывание было взведено 536 раз), частота работы - 2 кГц (500 мкс).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.