(алгоритм выше)
Может.. пробовать надо
2. Какие для сравнения алгоритмы по сложности у вас работали на каких скоростях.
например просто поиск максимума по кадру 160х120 сколько дает на вскидку?
Камера непрерывно фигачит через DMA в память.
Из моего кода:
move_image((unsigned char *)DMA_BUF1, (unsigned char *)DMA_BUF2, // grab new frame
(unsigned char *)FRAME_BUF, imgWidth, imgHeight);
Захват кадра 160x120: 3ms, поиск мин и макс Y=1ms
320x240: 11-12ms, поиск мин и макс Y=5ms
Y=Brightness
Поиск и работа с кадром:
- Код: Выделить всё
for(yy = 0; yy < imgHeight; yy++) {
for(xx = 0; xx < imgWidth; xx += 2) {
y1 = frameBuffer[idxFrame + 1]; // Pixel 1
y2 = frameBuffer[idxFrame + 3]; // Pixel 2
idxFrame += 4;
if (y1 < minY) minY = y1;
if (y2 < minY) minY = y2;
if (y1 > maxY) maxY = y1;
if (y2 > maxY) maxY = y2;
}
}
<<<<С Blackfin камеры можно взять:
160x120=60fps>>>>
т.е. он 1/60 сек читает данные с видеоматрицы?
или матрица "готовит" эти данные столько?
как построен процесс работы с кадром?
Матрица 60 раз пишет в память сама по себе.
Быстрее сенсор не может (по даташиту на OV7725).
___как я понимаю в контролере крутится бесконечный цикл с проверкой переменной выхода.
___в цикле вызывается функция копирования данных из камеры в паять(или обращение напрямую к памяти камеры)
__так ли это?
Да так и есть. Надо делать копию и работать с ней (см.выше).
Можно наверное напрямую из памяти которая отведена под DMA, но я не пробовал.
расскажите пожалуйста о процессе работы контролера в Blackfin.
Стартовая точка
main() {
// тут код на C
}
Самое важное забыл спросить!
С какой скоростью может Blackfin общаться с компьютером по com-порту в процессе работы? (не станет ли это узким местом)
максимально возможно было 1500000 бит/сек (с ошибками).
921600 bps без ошибок.
через свой FIFO SYNC достигалось 4.5мбайт/сек (с ошибками). 1.3мбайт/сек (без ошибок).
Видеопоток для 160*120*2*60=38400*60=40*60=2.4мбайт/сек (2 байта на пиксель).
Вообще передавать изображение как есть смысла нету, гораздо удобнее его предварительно обработать.
Из сложных я делал выделение границ для 320x240, занимало около 0.3сек.