社区
图形处理/算法
帖子详情
谁有中值滤波、高通、低通、带通滤波的算法阿 Matlab +VC 6.0 +matcom??? 请求源程序
slyzhang
2004-07-18 07:12:19
我在做语音识别,好多算法不懂 希望寻找中值滤波、带通滤波、低通滤波、高通滤波的算法程序
前面使用Matlab +VC+Matcom 制作Dll , 可惜使用MatCom时 不能使用信号工具箱函数 请教各位了
如何VC 下使用 matcom 制作工具箱中的Dll 阿 ??????
...全文
460
7
打赏
收藏
谁有中值滤波、高通、低通、带通滤波的算法阿 Matlab +VC 6.0 +matcom??? 请求源程序
我在做语音识别,好多算法不懂 希望寻找中值滤波、带通滤波、低通滤波、高通滤波的算法程序 前面使用Matlab +VC+Matcom 制作Dll , 可惜使用MatCom时 不能使用信号工具箱函数 请教各位了 如何VC 下使用 matcom 制作工具箱中的Dll 阿 ??????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
changlele
2004-07-19
打赏
举报
回复
带通滤波也是类似,只不过模板的取值不同,
有的模板是这样的
1 2 1
2 4 2
1 2 1
等等。类似的模板有的是,找本书看看吧,
可能上面写的有点不对,最中间的值好像错了
这些东西都记不住了,很久以前做这些玩意
建议你看《数字图像处理(第二版)》
那本书,里面有很多算法的介绍
changlele
2004-07-19
打赏
举报
回复
比如一个800×600象素的图像,
处理的时候选择一个模板一般是3×3或者5×5的
用这个模板遍历。取出一个象素点周围的8个点(3×3的情况)加上自己本身这个点。
这9个点找出象素中间的那个值,用这个值替代取出的那个象素点。
当然5×5的模板也类似
处理部分的源代码如下
int a[9];
int i,j,t,m,k; //中值滤波
for(i = 1; i< m_nHeight - 1; i++)
for(j = 1; j< m_nWidth - 1 ; j++)
{
a[0] = Data[i][j];
a[1] = Data[i-1][j];
a[2] = Data[i+1][j];
a[3] = Data[i][j-1];
a[4] = Data[i][j+1];
a[5] = Data[i+1][j+1];
a[6] = Data[i-1][j-1];
a[7] = Data[i+1][j-1];
a[8] = Data[i-1][j+1];
for(k=0;k<9;k++)
for(m=0;m<9-i;m++)
if( a[i] > a[i+1] )
{
t = a[i];
a[i] = a[i+1];
a[i+1] = a[i];
}
Data[i][j] = a[5];
}
Data[i][j]就是待处理的图像的象素值
changlele
2004-07-19
打赏
举报
回复
源代码都已经发送给你了
发送者changlelele@netease.com
wrcluomo
2004-07-19
打赏
举报
回复
这个是中值的,排序我用的冒泡法.你可以改改.
wrcluomo
2004-07-19
打赏
举报
回复
void CWrcimageDoc::GetRGBMedian(char *pucImageData,long lLineBytes,int x,int y,int *pnRGB,int nStep)
{
unsigned char r[9],g[9],b[9];
r[0]=*(pucImageData+lLineBytes*(y-1)+(x-nStep)+2);
g[0]=*(pucImageData+lLineBytes*(y-1)+(x-nStep)+1);
b[0]=*(pucImageData+lLineBytes*(y-1)+(x-nStep));
r[1]=*(pucImageData+lLineBytes*(y-1)+(x)+2);
g[1]=*(pucImageData+lLineBytes*(y-1)+(x)+1);
b[1]=*(pucImageData+lLineBytes*(y-1)+(x));
r[2]=*(pucImageData+lLineBytes*(y-1)+(x+nStep)+2);
g[2]=*(pucImageData+lLineBytes*(y-1)+(x+nStep)+1);
b[2]=*(pucImageData+lLineBytes*(y-1)+(x+nStep));
r[3]=*(pucImageData+lLineBytes*y+(x-nStep)+2);
g[3]=*(pucImageData+lLineBytes*y+(x-nStep)+1);
b[3]=*(pucImageData+lLineBytes*y+(x-nStep));
r[4]=*(pucImageData+lLineBytes*y+(x)+2);
g[4]=*(pucImageData+lLineBytes*y+(x)+1);
b[4]=*(pucImageData+lLineBytes*y+(x));
r[5]=*(pucImageData+lLineBytes*y+(x+nStep)+2);
g[5]=*(pucImageData+lLineBytes*y+(x+nStep)+1);
b[5]=*(pucImageData+lLineBytes*y+(x+nStep));
r[6]=*(pucImageData+lLineBytes*(y+1)+(x-nStep)+2);
g[6]=*(pucImageData+lLineBytes*(y+1)+(x-nStep)+1);
b[6]=*(pucImageData+lLineBytes*(y+1)+(x-nStep));
r[7]=*(pucImageData+lLineBytes*(y+1)+(x)+2);
g[7]=*(pucImageData+lLineBytes*(y+1)+(x)+1);
b[7]=*(pucImageData+lLineBytes*(y+1)+(x));
r[8]=*(pucImageData+lLineBytes*(y+1)+(x+nStep)+2);
g[8]=*(pucImageData+lLineBytes*(y+1)+(x+nStep)+1);
b[8]=*(pucImageData+lLineBytes*(y+1)+(x+nStep));
int i,j;
unsigned char ucTem;
for(i=0;i<8;i++)
{
for(j=0;j<8-i;j++)
{
if(r[j]>r[j+1])
{
ucTem=r[j];
r[j]=r[j+1];
r[j+1]=ucTem;
}
if(g[j]>g[j+1])
{
ucTem=g[j];
g[j]=g[j+1];
g[j+1]=ucTem;
}
if(b[j]>b[j+1])
{
ucTem=b[j];
b[j]=b[j+1];
b[j+1]=ucTem;
}
}
}
pnRGB[0]=r[4];
pnRGB[1]=g[4];
pnRGB[2]=b[4];
}
wrcluomo
2004-07-19
打赏
举报
回复
////中值滤波
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
bool CWrcimageDoc:: MedianFilter(void)
{
char * pcSource,*pcDest,*pcSourceData,*pcDestData;
pcSource=(char *)::GlobalLock(m_hDIB);
::GlobalUnlock(m_hDIB);
int nBits,nStep;
nBits=::DIBBits(pcSource);
if(!(nBits==24||nBits==32))
{
AfxMessageBox("不是24/32位真彩位图,请转为24/32位位图");
return false;
}
nStep=nBits/8;
int nWidth,nHeight;
long lLineBytes;
unsigned char * pucSource=NULL,*pucDest=NULL;
HGLOBAL hTemImage=NULL;
hTemImage=::CopyHandle((HGLOBAL)m_hDIB);
if(hTemImage==NULL)
{
AfxMessageBox("分配内存失败");
::GlobalFree(hTemImage);
hTemImage=NULL;
return false;
}
pcDest=(char *)::GlobalLock(hTemImage);
::GlobalUnlock(hTemImage);
pcSourceData=::FindDIBBits(pcSource);
pcDestData=::FindDIBBits(pcDest);
nWidth=::DIBWidth(pcSource);
nHeight=::DIBHeight(pcSource);
lLineBytes=WIDTHBYTES(nWidth *nBits);
int i,j;
int pnRGB[3];
unsigned char * r,*g,*b;
for(i=1;i<nStep*(nWidth-1);i=i+nStep)
{
for(j=1;j<nHeight-1;j++)
{
GetRGBMedian( pcDestData,lLineBytes,i,j, pnRGB,nStep);
r=(unsigned char *) pcSourceData+lLineBytes*j+i+2;
g=(unsigned char *) pcSourceData+lLineBytes*j+i+1;
b=(unsigned char *) pcSourceData+lLineBytes*j+i;
*r=pnRGB[0];
*g=pnRGB[1];
*b=pnRGB[2];
}
}
::GlobalFree(hTemImage);
hTemImage=NULL;
return true;
}
slyzhang
2004-07-18
打赏
举报
回复
sly582@sohu.com
最好是有源代码的 我可以分析和使用阿 最近时间比较紧了 快死了。
感谢各位了。!!!! 能否给个整体的思路????
基于
VC
6.0
开发的信号处理软件+数据+运行结果图片
基于
VC
6.0
开的发一个信号处理软件,是本人的毕业设计,通信专业,实现了OCT,FFT,
中值滤波
,均值滤波,
高通
、
低通
、带通、带阻滤波器,窗函数提供:汉宁窗,汉明窗,布拉克曼窗,巴特列特窗,数据源是由
mat
lab
生成...
中值滤波
(
mat
lab
)
中值滤波
中值滤波
:是一种非线性数字滤波器技术, 用于降噪。 理解:去一个模板,可为3 * 3, 5 * 5,n * n…每次从图像中取出模板大小的矩阵,将所有元素排序,取中间值放入木板的中心位置,再还原到原图中,...
中值滤波
、
低通
与
高通
滤波
首先给出结论,
中值滤波
,例如说设置窗长为5个点的均值滤波,属于
低通
滤波。这点很容易理解,假设窗长为无限长,原始信号就变为了直流分量,频率为0。因此,均值滤波属于
低通
滤波,
中值滤波
也是一样的道理。
mat
lab
自写 自适应
中值滤波
mat
lab
自适应
中值滤波
算法
自写自适应
中值滤波
算法
mat
lab
实现
Mat
lab
实现图像滤波(贰):
中值滤波
、高效的
中值滤波
、带权重的
中值滤波
文章目录1
中值滤波
1.1 原理1.2
中值滤波
对图像的影响1.3 函数编写1.4 主文件1.5 效果展示2 高效的
中值滤波
算法
2.1 原理2.2 函数编写3 带权重的
中值滤波
3.1 原理3.2 函数编写3.3 主文件3.4 效果展示 1
中值滤波
1.1 ...
图形处理/算法
19,466
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章