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

Adept88

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

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

  • Посещение

Репутация

0 Новичек

О Adept88

  • Звание
    Новичок
  1. cvDFT

    Переделаю во float. Спасибо за ссылку, но не могу оттуда вычленить нужный материал. Вы не могли бы показать, как взять IplImage, применить на его пикселах БПФ, а потом ОПФ? Я читал, что БПФ реализуется в cvDFT, но вот применить к IplImage не выходит.
  2. cvDFT

    Помогите реализовать преобразование по след. алгоритму: 1) умножаем пиксели на (-1)^(x+y) ( в степени) 2) применяем ДПФ. Вот это хочу реализовать с помощью cvDFT, но не получается 3) применяем некий фильтр (например Баттерворт) 4) применяем ОПФ. также с помощью cvDFT 5) умножаем пиксели на (-1)^(x+y) ( в степени) Вот, что я намудрил: #include <cv.h> #include <highgui.h> #include <cmath> #include <iostream> static int W, H, STEP; void transform(uchar *); int main() { IplImage *clone1, *clone2, *clone3, *image = (cvLoadImage("Image.jpg", 0) ); if (!image) return 1; STEP = image->widthStep; W = image->width; H = image->height; // создадим клонов clone1 = cvCloneImage(image); clone2 = cvCloneImage(image); clone3 = cvCloneImage(image); // покажем изображения cvNamedWindow("original"); cvNamedWindow("ideal filter"); cvNamedWindow("butterworth"); cvNamedWindow("gauss"); // сдвинем их cvMoveWindow("original", 0, 0); cvMoveWindow("ideal filter", 0, H + 60); cvMoveWindow("butterworth", W, 0); cvMoveWindow("gauss", W, H + 60); uchar* ptr = (uchar*) (image->imageData); uchar* ptr1 = (uchar*) (clone1->imageData); uchar* ptr2 = (uchar*) (clone2->imageData); uchar* ptr3 = (uchar*) (clone3->imageData); transform(ptr1); transform(ptr2); transform(ptr3); /*CvMat* mtt = cvCreateMat(W, H, CV_32FC1); mtt->data.ptr = (uchar*) clone1->imageData; //CvMat* dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); cvDFT(mtt, mtt, CV_DXT_FORWARD); */ transform(ptr1); transform(ptr2); transform(ptr3); while(cvWaitKey(33) != 27) { cvShowImage("original", image); cvShowImage("ideal filter", clone1); cvShowImage("butterworth", clone2); cvShowImage("gauss", clone3); } // освобождаем ресурсы cvReleaseImage(&image); cvReleaseImage(&clone1); cvReleaseImage(&clone2); cvReleaseImage(&clone3); // удаляем окна cvDestroyAllWindows(); return 0; } void transform(uchar *ptr) { for(int y=0; y < H; y++) for(int x=0; x < W; x++) if ((x + y) % 2 == 1) ptr[y * STEP + x] *= -1; return; }
×