Перейти к содержимому
Compvision.ru

kilop

Пользователи
  • Количество публикаций

    113
  • Зарегистрирован

  • Посещение

  • Days Won

    5

Все публикации пользователя kilop

  1. Здравствуйте, уважаемые форумчане. Надеюсь услышать полезные советы. Стоит следующая задача, есть серия изображений при разных экспозициях, необходимо собрать из этих изображений одно, причем для каждого прямоугольника, надо учитывать среднюю яркость( чтобы она не превышала некоторого числа) и чтобы не было блика. Видимо стоит задача поиска и классификации, находим похожие на прямоугольники объекты, проверяем насколько они похожи на "эталонный прямоугольник" и в зависимости от результата, сохраняем или нет. Но есть несколько типов деталей, и у всех разные размеры прямоугольника, тогда наверное лучше, для серии изображений, найти все объекты, рассчитать некоторые характеристики, и наибольшее число похожих сохранить на будущеее изображение и усреднить. Хотелось бы услышать ваши советы, как это организовать лучше? изображения.rar
  2. да я таким макаром и делаю (по кол-ву точек в контуре, размеру по длине, и отношение площадь-периметр), просто пока не могу настроить параметры, так как там немного края не добирает,)
  3. параметры ядра в OpenCV

    Почитай две ссылки, если возникнут вопросы, спрашивай http://robocraft.ru/blog/computervision/427.html http://robocraft.ru/blog/computervision/281.html
  4. 1)Задача, найти вертикальные границы, то есть каковы расстояния между каждыми прямоугольниками (по вертикали). 2)Это реальные данные, просто я вырезал только правую границу объекта,а так их две. 3)Проблемы с границей есть (для прямоугольников), так как это деталь-эталон, и потом надо сравнивать миллиметровые и пиксельные значения расстояния между прямоугольниками. real_images.rar
  5. можете пояснить, я просто не понял. Какой алгоритм? Делаем серию снимков с одной экспозицией,какие наши дальнейшие действия? Насчет определения границ,забыл сказать что нас интересуют именно границы по вертикали..
  6. Я строил функцию зависимости яркости от экспозиции, думаю 1/экспозицию не подойдет, и вообще там плохо, что быстро уходить за 255. Насчет подвижек не знаю, камеры зафиксирована, максимум наверное 0.5 пикселя. Но сама идея передискретизации интересна. Насчет блика,какую маску лучше использовать? Есть сомнения насчет бликов, если есть блик, то весь прямоугольник засвечен, может нам такой и не понадобиться
  7. это на первый пост был ответ
  8. так тоже не пойдет, при одной экспозиции у прямоугольников края с разными степенями освещенности (то есть верхние прямоугольники хорошо видны .нижние плохо, у нас задача с высокой точностью найти границы, то есть по вертикали аппроксимировать яркость и найти места перехода от границы к фону) если что-то другое имеешь в виду поясни
  9. Картинка с одного и того же места с разными экспозициями, да просто разделил (учитывались только те строки, в которых средняя яркость выше значения порога разделения, расчитанном методом Отсу, и кол-во пискселей ярче от 250 до 255 не првевышает 3), а какие идеи как лучше нормализовать? Надо найти прямоугольники, причем слишком яркие не надо учитывать(то есть например, если 60% составляет пиксели 255 то не учитывать такие прямоугольники)
  10. IplImage и функция

    может быть флейм, лучше вместо iplImage использовать cv::Mat, все-таки этот класс упрощает работу с изображением, и во многих функциях его использовать проще( например, позволяет хранить контуры в векторах).
  11. я складывал сначала, не учитывая, какой формы должен быть объект (то есть просто построчно), но там тёмные места стали слишком светлые,а так как стоит задача определения границ каждого прямоугольника, то вариант не пошел, так как граница по вертикали(высота) размылась. Вот насчет template matching, что считать шаблон? Такая схема подойдет? 1) Каждую картинку а) бинаризуем б) делаем морфологическое размыкание в) удаляем контуры маленького размера(точки всякие и т.д.) г) запоминаем все остальные контуры и их характеристики 2) ищем средний размер(используя Ransac, чтобы большие объекты не влияли) 3) собираем изображение только из тех, которые удовлетворяют полученным характеристикам И вот такой вопросик, как наилучшим образом убирать горизонтальные линии, чтобы они не влияли на поиск контуров?
  12. уважаемые форумчане,возникла следующая проблема. Работую в qt в связке с openCV, вызываю функцию cvSmooth(img,dest, CV_GAUSSIAN,3,0). И возникает следующая проблема, если она вызывается в конструкторе класса основного окна, то все нормально, функция работает. Если вызывает просто в функции, допустим при нажатии кнопки, то возникает ошибка "Инструкция по адресу 0x68925782" обратилась к памяти по адресу и так далее... Никто не сталкивался с похожей проблемы или нет идей решения? Отключать DEP прообовал, результата нет. Главный вопрос,не понятно, что делать и почему работает в конструкторе? Если у кого возникала такая проблема, подскажите или возможные пути решения. Потому что я отчаялся найти выход.
  13. мне посоветовали использовать так void MainWindow::on_pushButton_clicked() { cv::Mat x = cv::imread("C:/1.jpeg");//Загрузка cv::Mat y; cv::blur(x,y,cv::Size(3,3));//Сглаживание гаусом cv::imwrite("C:/1_out.jpg",y); } и в данном случае все работает
  14. вот абсолютно простой пример, и то он не работает //заголовочный файл #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; private slots: void gausImage(); }; /////////////////////////////////////////////////////////////////////////////// //исходник #include "mainwindow.h" #include "ui_mainwindow.h" #include<highgui.h> #include <cv.h> #include<QDebug> void GaussFromImage( IplImage* dest) { IplImage *img=cvCloneImage(dest); cvSmooth(img, dest, CV_GAUSSIAN, 3, 0); cvReleaseImage( &img ); } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); gausImage();//проводим сглаживание connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(gausImage()));//цепляем на кнопку } MainWindow::~MainWindow() { delete ui; } void MainWindow::gausImage() { IplImage* img = cvLoadImage("C:\\grid.bmp"); // Загружаем изображение IplImage* dest= cvCreateImage(cvGetSize(img),8,1);//ч.б изображение GaussFromImage(img);//проходим гаусом cvCvtColor( img, dest, CV_BGR2GRAY );//конвертируем цвета cvReleaseImage(&img); cvReleaseImage(&dest); qDebug()<<"gaus"; } //////////////////////////////////////// при нажатии на кнопку,все вылетает и дает ту самую ошибку #endif // MAINWINDOW_H
  15. да в том то и дело, что просто cvSmooth(img,dest, CV_GAUSSIAN,3,3), если в конструкторе все норм, если как слот, то проблемы, причем прямо перед входом в функцию проверяю, чтот за значения в img и dest,там фотографии, 3-цветные,8-битовые, все нормально, а не катит. может в сборке библиотеки проблемы думаю...
×