我试图在彩色图像上应用FFT.我提取了三个组成部分:红色,绿色和蓝色然后我分别应用于fft2每个组件然后我在每个平面中应用高斯滤波器.现在我试图在模糊后显示红色,绿色和蓝色成分.之后,我申请ifft2获得结果.
我的问题是我在每个组件中看到一个灰色图像.我试图只显示颜色平面,但我的代码不起作用.另外,我想将这三个组件组合在一起以返回到全彩色图像.我在下面写了下面的代码.谁能告诉我我做错了什么?
% Calculate FFT for R , G , B images
I = imread ('lena.jpg');
% Extract three images
Red = I (: , : , 1);
Green = I (: , : , 2);
Blue = I(: , : , 3);
f_r = fftshift (Red);
F_r = fft2 (f_r);
f_g = fftshift (Green);
F_g = fft2 (f_g);
f_b = fftshift (Blue);
F_b = fft2 (f_b);
% Calculate the gaussian filter then find its FFT …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成可应用于图像的高斯滤镜,但我想将其应用于1D两次:水平和垂直.另外,我想分别将它应用到每个飞机上.
这意味着我想设计一维高斯滤波器将其水平应用于红色,绿色,蓝色分量,然后我有相同的1D高斯滤波器将其垂直应用于红色,绿色,蓝色分量.
我认为这个操作应该等于在原始彩色图像上应用2D高斯滤波器.
我是Matlab和图像处理过滤器的新手.
我试图通过为每个帧调用SURF函数来在视频中找到一个对象...这是SURF函数{
void Identify_SURF_Frame (Mat img_object , Mat img_scene , CvRect in_box)
{
//-- Step 1: Detect the keypoints using SURF Detector
int minHessian = 1;
SurfFeatureDetector detector( minHessian , 15 , 3 );
std::vector<KeyPoint> keypoints_object, keypoints_scene;
detector.detect( img_object, keypoints_object );
detector.detect( img_scene, keypoints_scene );
//-- Step 2: Calculate descriptors (feature vectors)
SurfDescriptorExtractor extractor;
Mat descriptors_object, descriptors_scene;
extractor.compute( img_object, keypoints_object, descriptors_object );
extractor.compute( img_scene, keypoints_scene, descriptors_scene );
//-- Step 3: Matching descriptor vectors using FLANN matcher
//FlannBasedMatcher matcher;
BruteForceMatcher < L2 …Run Code Online (Sandbox Code Playgroud)