Всем привет! Помогите разобраться. Есть задача: сделать программу для уменьшение шума на изображении путем усреднения серии изображений. В ходе решения этого вопроса идея и основа программы (консольное приложение) была заимствованна у автора с его страницы http://www.aishack.in/2010/01/noise-reduction-by-averaging/ Там же рассказано о принципе усреднения. Используется OpenCV. Вот еще интересная ссылка https://github.com/sinotov/no-noise код программы:
Код | #include <opencv/cv.h> #include <opencv/highgui.h>
using namespace cv;
int main() {
IplImage* imgRed[25]; IplImage* imgGreen[25]; IplImage* imgBlue[25]; for(int i=0;i<25;i++) { IplImage* img; char filename[150]; sprintf(filename, "D:\image\20130110_211620.jpg", (i+1)); // у автора было так sprintf(filename, "%d.jpg", (i+1)); img = cvLoadImage(filename); imgRed[i] = cvCreateImage(cvGetSize(img), 8, 1); imgGreen[i] = cvCreateImage(cvGetSize(img), 8, 1); imgBlue[i] = cvCreateImage(cvGetSize(img), 8, 1); cvSplit(img, imgRed[i], imgGreen[i], imgBlue[i], NULL); cvReleaseImage(&img); } CvSize imgSize = cvGetSize(imgRed[0]); IplImage* imgResultRed = cvCreateImage(imgSize, 8, 1); IplImage* imgResultGreen = cvCreateImage(imgSize, 8, 1); IplImage* imgResultBlue = cvCreateImage(imgSize, 8, 1);
IplImage* imgResult = cvCreateImage(imgSize, 8, 3); for(int y=0;y<imgSize.height;y++) { for(int x=0;x<imgSize.width;x++) { int theSumRed=0; int theSumGreen=0; int theSumBlue=0; for(int i=0;i<25;i++) { theSumRed+=cvGetReal2D(imgRed[i], y, x); theSumGreen+=cvGetReal2D(imgGreen[i], y, x); theSumBlue+=cvGetReal2D(imgBlue[i], y, x); } theSumRed = (float)theSumRed/25.0f; theSumGreen = (float)theSumGreen/25.0f; theSumBlue = (float)theSumBlue/25.0f; cvSetReal2D(imgResultRed, y, x, theSumRed); cvSetReal2D(imgResultGreen, y, x, theSumGreen); cvSetReal2D(imgResultBlue, y, x, theSumBlue); } } cvMerge(imgResultRed, imgResultGreen, imgResultBlue, NULL, imgResult); cvNamedWindow("averaged"); cvShowImage("averaged", imgResult); cvWaitKey(0);
return 0; }
|
Но при ее запуске происходит что-то не так, т.е. собирается без ошибок, но вылетает сообщение "Прекращена работа программы test.exe". Объясните пожалуйста в чем может быть дело. Здесь можно скачать изображения http://yadi.sk/d/EsgEJjAc1lvQz Если у Вас есть другие идеи и решения этой задачи - буду только рад Заранее Спасибо. |