Применение режекторного фильтра к спектру изображения (OpenCV)

Как я могу применить режекторный фильтр к спектру изображения, используя OpenCV 2.4 и C ++? Я хочу рассчитать ДПФ изображения, подавить определенные частоты и рассчитать обратный ДПФ. Может кто-нибудь показать мне пример кода, как применить режекторный фильтр в области частот?

РЕДАКТИРОВАТЬ:

Вот то, что я пробовал, но квадранты частотного спектра не в порядке, поэтому источник спектра не является центром изображения. Это затрудняет мне определение частот для подавления. При обмене квадрантов так, чтобы источник был центром, обратное ДПФ показывает неверные результаты. Может кто-нибудь показать мне, как сделать обратный ДПФ с поменять местами?

Я не понимаю количество столбцов в частотных изображениях filter1 и filter2 (см. Код). Если я использую filter1.cols как u в цикле for, я не получаю доступ к правой границе изображений. Filter1 и filter2, кажется, имеют ок. 5000 столбцов, но исходное изображение имеет разрешение 1280×1024 (оттенки серого). Есть мысли по этому поводу?

Еще комментарии по поводу моего кода?

    Mat img;
img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE);

int M = getOptimalDFTSize( img.rows );
int N = getOptimalDFTSize( img.cols );
Mat padded;
copyMakeBorder(img, padded, 0, M - img.rows, 0, N - img.cols, BORDER_CONSTANT, Scalar::all(0));

Mat planes[] = {Mat_<float>(padded), Mat::zeros(padded.size(), CV_32F)};
Mat complexImg;
merge(planes, 2, complexImg);

dft(complexImg, complexImg,cv::DFT_SCALE|cv::DFT_COMPLEX_OUTPUT);

split(complexImg, planes);

Mat filter1;
planes[0].copyTo(filter1);
Mat filter2;
planes[1].copyTo(filter2);

for( int i = 0; i < filter1.rows; ++i)
{
for(int u=7;u<15;++u)
{
filter1.at<uchar>(i,u)=0;
filter2.at<uchar>(i,u)=0;
}Mat inverse[] = {filter1,filter2};
Mat filterspec;
merge(inverse, 2, filterspec);

cv::Mat inverseTransform;
cv::dft(filterspec, inverseTransform,cv::DFT_INVERSE|cv::DFT_REAL_OUTPUT);

cv::Mat finalImage;
inverseTransform.convertTo(finalImage, CV_8U);

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector