#include <math.h>
#define N 3
float gauss(float(*)(float), float, float, int)
void main( )
{
float function_name(float)
float a, b
printf ("请输入积分上限b\n")
scanf("%f", &b)
printf("请输入积分下限a\n")
scanf("%f", &a)
float ans
ans=gauss(function_name, a, b, N)
printf("ans=%f", ans)
}
float gauss(float(*func)(float x), float a, float b, int n )/*高斯求积*/
{
/*高斯点及其求积系数列表*/
float x1[1]={0.0}
float A1[1]={2}
float x2[2]={-0.5573503, 0.5573503}
float A2[2]={1, 1}
float x3[3]={-0.7745967, 0.0, 0.7745967}
float A3[3]={0.555556, 0.888889, 0.555556}
float x4[4]={0.3399810, -0.3399810, 0.8611363, -0.8611363}
float A4[4]={0.6521452, 0.6521452, 0.3478548, 0.3478548}
float x5[5]={0.0, 0.5384693, -0.5384693, 0.9061799, -0.9061799}
float A5[5]={0.5688889, 0.4786287, 0.4786287, 0.2369269, 0.2369269}
float *p, *t
switch (n)
{
case 1:
p=x1
t=A1
break
case 2:
p=x2
t=A2
break
case 3:
p=x3
t=A3
break
case 4:
p=x4
t=A4
break
case 5:
p=x5
t=A5
break
default:
printf ("intput wrong!")
}
float g
int i
for (i=0,g=0i<ni++){
g+=(*func)((b-a)*p[i]/2+(a+b)/2)*t[i]
}
g*=(b-a)/2
return g
}
float function_name(float x)
{
return (sqrt(4-x*x))
}
2.噪声及其噪声的Matlab实现imnoise函数格式:J=imnoise(I,type)J=imnoise(I,type,parameter)说明:J=imnoise(I,type)返回对图像I添加典型噪声后的有噪图像J,参数type和parameter用于确定噪声的类型和相应的参数。加权领域平均算法来进行滤波处理由实验我们可以看出,一般的滤波器在对图像进行噪声滤除的同时对图像中的细节部分有不同程度的破坏,都不能达到理想的效果。但是采用加权的邻域平均算法对图像进行噪声滤除,不仅能够有效地平滑噪声,还能够锐化模糊图像的边缘。加权的邻域平均算法的基本思想是:在一个邻域内,除了可以利用灰度均值外,灰度的上偏差和下偏差也能够提供某些局部信息。算法的计算公式描述如下,用f(x,y)表示原始图像,g(x,y)为平滑后点(x,y)的灰度值,Vx,y表示以点(x,y)为中心的邻域,该邻域包含N个象素,m(x,y)表示邻域Vx,y内的灰度均值。NI表示邻域内大于平均值的像素个数,Ng表示小于平均值的像素个数,而N0表示等于平均值的像素个数。则修正的邻域平均法由下式给出:m-Aml;Nl>max{Ng,N0}g(x,y)=m+Amg;Ng>max{Nl,N0}(1)m;else(1)式(1)中,A为修正系数,取值范围为0~1,其大小反映Vx,y中的边缘状况。以上是我认为在图像处理中比较有价值的两点,有兴趣的可以上网查阅相关的资料。3.图像滤波的Matlab实现3.1conv2函数功能:计算二维卷积格式:C=conv2(A,B)C=conv2(Hcol,Hrow,A)C=conv2(,'shape')说明:对于C=conv2(A,B),conv2的算矩阵A和B的卷积,若[Ma,Na]=size(A),[Mb,Nb]=size(B),则size(C)=[Ma+Mb-1,Na+Nb-1]C=conv2(Hcol,Hrow,A)中,矩阵A分别与Hcol向量在列方向和Hrow向量在行方向上进行卷积;C=conv2(,'shape')用来指定conv2返回二维卷积结果部分,参数shape可取值如下:》full为缺省值,返回二维卷积的全部结果;》same返回二维卷积结果中与A大小相同的中间部分;valid返回在卷积过程中,未使用边缘补0部分进行计算的卷积结果部分,当size(A)>size(B)时,size(C)=[Ma-Mb+1,Na-Nb+1]。3.2conv函数功能:计算多维卷积格式:与conv2函数相同3.3filter2函数功能:计算二维线型数字滤波,它与函数fspecial连用格式:Y=filter2(B,X)Y=filter2(B,X,'shape')说明:对于Y=filter2(B,X),filter2使用矩阵B中的二维FIR滤波器对数据X进行滤波,结果Y是通过二维互相关计算出来的,其大小与X一样;对于Y=filter2(B,X,'shape'),filter2返回的Y是通过二维互相关计算出来的,其大小由参数shape确定,其取值如下:》full返回二维相关的全部结果,size(Y)>size(X);》same返回二维互相关结果的中间部分,Y与X大小相同;》valid返回在二维互相关过程中,未使用边缘补0部分进行计算的结果部分,有size(Y)欢迎分享,转载请注明来源:内存溢出
评论列表(0条)