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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2017, 16:59   #11
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

...и да, вобщем сами числа получаются от балды, в зависимости от изображения. Но их можно сравнивать в серии, и выбирать, скажем 30% от правого края интервала в серии. Тогда, вполне круто. А вот сходу по 1 картинке сказать резкое или нет на основе числа - не выйдет.
alexzk вне форума Ответить с цитированием
Старый 05.07.2017, 17:04   #12
Mukudori
Пользователь
 
Регистрация: 05.07.2017
Сообщений: 24
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
[CODE]
и что значит слабо?
я накладывал фильтры 17%, 34% и 44% - между ними разница была в 4м разряде
на 74% скакнуло на 2й разряд.

И все таки я бы не стал копаться в слишком малых долях double, так как алгоритм может наткнуться на совсем плохое изображение и тогда значения уйдут в 0. К тому же пользователи моей программы будут видеть итоговую оценку изображения чтобы установить интервал отсеивания лучших изображений и визуально такие маленькие числа не смотрятся.

Вы считаете, что ваш последний вариант максимально близок к тому что был представлен на питоне? Если так, то я собираю библиотеку и займусь разработкой интерфейса

Последний раз редактировалось Mukudori; 05.07.2017 в 17:08.
Mukudori вне форума Ответить с цитированием
Старый 05.07.2017, 17:12   #13
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Мне так кажется, но я не буду делать на это ставку )

... кстати, лапласиан там еще имеет 3 значемых параметра, с ними можно тоже играть. А вот что они математически значат - я хз.
Ага, ну 2 там понятно, скейл и шифт, т.е. можно задать, чтобы приводилось к интервалу 1000 или еще что.
А вот размер кернеля - это будет влиять на качество распознавания, я думаю.

Вот размер 3 лучше сработал на звездах (точках), чем на Луне.

Последний раз редактировалось alexzk; 05.07.2017 в 17:19.
alexzk вне форума Ответить с цитированием
Старый 05.07.2017, 17:23   #14
Mukudori
Пользователь
 
Регистрация: 05.07.2017
Сообщений: 24
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
Мне так кажется, но я не буду делать на это ставку )

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

Так или иначе ваша помощь неоценима. Я уже 2 недели ломаю голову над этой задачей, перепробовал много математических методов, где все операции по свертке матриц описывал вручную, без всяких соболей и лапласианов, но ни один метод я не реализовал так, чтобы он работал стабильно. Этот код пока слишком грубых ошибок не делал, буду пытаться внедрять.
Mukudori вне форума Ответить с цитированием
Старый 05.07.2017, 17:37   #15
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

...там коменты еще под статьей, можно попробовать вместо лапласиана сделать Кенни, типа так

Код:
 Canny( src_gray, canny_output, treshold1, treshold2, 3, true);
alexzk вне форума Ответить с цитированием
Старый 14.07.2017, 13:00   #16
Mukudori
Пользователь
 
Регистрация: 05.07.2017
Сообщений: 24
По умолчанию

Да, и еще:

в этой статье еще говорится о матрице 3х3 от которой зависит результат расчета. Как эту матрицу менять и где именно она встречается в этом коде

Код:
double OpenCvFuncs::CalculateBlur()
{
	Mat image_gray;
	cvtColor(image, image_gray, CV_BGR2GRAY);
	image.convertTo(image_gray, CV_64F);// convert to double
	normalize(image_gray, image_gray, 0, 1, cv::NORM_MINMAX);
	Mat dest;
	cv::Laplacian(image_gray, dest, image_gray.type());
	cv::Mat mean, stddev;
	cv::meanStdDev(image_gray, mean, stddev);

	auto res = stddev.at<double>(0);
	return res;
}
Mukudori вне форума Ответить с цитированием
Старый 14.07.2017, 20:32   #17
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

cv::Laplacian(image_gray, dest, image_gray.type());

почитайте описание прототип функции - параметр "кернел" помоему. Должен быть нечет 1-3-7-...
alexzk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оценка потребляемой памяти и оценка времени выполнения. halcyon Общие вопросы C/C++ 0 22.03.2015 13:42
Качества программиста Makarrrr Свободное общение 12 03.02.2014 22:48
Оценка качества ГПСЧ Veryn4ik1993 Помощь студентам 13 02.01.2014 13:15
WPF + C# Подгрузка изображений в память, без блокирования файлов изображений fezilk25 C# (си шарп) 0 02.01.2014 11:28