资源简介
用opencv编写的维纳滤波器 实现图像去噪和图像恢复
代码片段和文件信息
#include“weina.h“
void weina(IplImage *dstGIplImage *dstW)
{
double k=0.01; //winer滤波加权系数
double R=5; //散焦退化函数散焦斑半径
int width =dstG->width; //读取图像宽度
int height = dstG->height; //读取图像高度
// 获取傅立叶变换的最佳尺寸(大于等于原先尺寸)
int dft_h = dstG->height;
int dft_w = dstG->width ;
//获取退化函数h
double *h=(double *)malloc(sizeof(double)*width*height);
memset(h0height*width);
CvMat* image_hre = cvCreateMat( height width CV_32FC1 );
for(int i=0;i for(int j=0;j {
double t=pow(1.0*i2)+pow(1.0*j2);
if(t h[j*width+i]=1.0/(3.14*R*R);
else
h[j*width+i]=0;
image_hre->data.fl[j*image_hre->cols+i]=h[j*width+i];
}
//对退化函数h进行傅里叶变换
CvMat* image_him = cvCreateMat( dft_hdft_w CV_32FC1);
CvMat* image_Cp = cvCreateMat( dft_h dft_w CV_32FC2);
CvMat* image_dst = cvCreateMat( dft_h dft_w CV_32FC2);
cvZero( image_him );
cvMerge( image_hre image_him NULL NULL image_Cp );
cvDFT( image_Cp image_dst CV_DXT_FORWARD dstG->height );
cvSplit( image_dst image_hre image_him 0 0 );
//得到模糊图像g的傅里叶变换
CvMat* image_gre = cvCreateMat( dft_hdft_wCV_32FC1);
CvMat* i
- 上一篇:实验3 C语言实现RC4加密算法报告
- 下一篇:帧间差分方法
相关资源
- OpenCV手势识别-手掌特征提取源码
- vc++&opencv图像分块
- OpenCv背景差分228299
- 在VC 6.0的opencv环境下视频显示与捕捉
- openCV获取车流
- Opencv C++ 读取、保存图片
- OpenCV视频的保存以及显示
- c++中的chamfer matching 实现
- opencv背景差分
- vibe算法opencv+c++,RGB图像可用
- 行人检测 opencv
- opencv 对视频进行感兴趣区域设置并保
- fastMatch的c++实现(需要opencv支持)
- OpenCV 装入一幅彩色图像然后在源图像
- 车道线识别源码
- 基于opencv园检测
- 植物大战僵尸基于OpenCv和C++实现
- OPENCV角点检测
- opencv标志识别
- 基于轮廓的倾斜仪表校正
- 在opencv中将两个图像给融合,让图像
- 使用OpenCV编写一个程序,该程序完成
- 使用 OpenCV 编制一个简单的徒手绘图程
- OpenCV解决PnP问题
- 基于opencv3.2的Moravec、Forstner、Harris算
- opencv+udp+c++ 的摄像头实时传输显示源
- MFC中嵌入显示opencv图像
- opencv调用海康摄像头
- 激光雷达数据读取以及显示C++需配置
- OpenCV在TI 达芬奇以及OMAP平台下的移植
评论
共有 条评论