如何求彩色图像的峰值信噪比?求matlab编的M文件~~
展开全部
CString CImgEnhance::SNR(unsigned char* m_pSrcImgData)
{
int byteCount; //DIB位图的字节数
int i;
// LPBITMAPINFOHEADER lpbmi;
// lpbmi=(LPBITMAPINFOHEADER)lpSrcDIB;
// m_pSrcImgData=(LPBYTE)lpbmi+lpbmi->
biSize+sizeof(RGBQUAD)*lpbmi->
biClrUsed;
//计算图像信噪比
double temp1=0.0;
double temp2=0.0;
//处理8位灰度图像
if (m_nBitCount==8)
{
//计算整幅DIB位图的字节数
byteCount =m_imgHeight*m_imgWidth*m_nBitCount/8;
for( i=0; i<byteCount; i++)
{
temp1=temp1+(double)m_pImgData[i]*m_pImgData[i];
temp2=temp2+(double)(m_pImgData[i]-
m_pSrcImgData[i])*(m_pImg Data[i]-m_pSrcImgData[i]);
}
}
else
{
AfxMessageBox("只能处理8位灰度图像!");
return "ERROR";
}
double SNR=temp1/temp2;
SNR=10*log10(SNR);
CString StrSNR;
StrSNR.Format("%f",SNR);
return StrSNR;
}
CString CImgEnhance::PSNR(unsigned char* m_pSrcImgData)
{
int byteCount; //DIB位图的字节数
int i;
//计算图像峰值信噪比
double temp1=0.0;
double temp2=0.0;
//处理8位灰度图像
if (m_nBitCount==8)
{
//计算整幅DIB位图的字节数
byteCount =m_imgHeight*m_imgWidth*m_nBitCount/8;
for( i=0; i<byteCount; i++)
{
temp1=temp1+(double)m_pImgData[i]*m_pImgData[i];
temp2=temp2+(double)(m_pImgData[i]
-m_pSrcImgData[i])*(m_pImg Data[i]-m_pSrcImgData[i]);
}
}
else
{
AfxMessageBox("只能处理8位灰度图像!");
return "ERROR";
}
double PSNR=m_imgHeight*m_imgWidth/temp2;
PSNR=10*log10(255*255*PSNR); //PSNR即为峰值信噪比
CString StrPSNR;
StrPSNR.Format("%f",PSNR);
return StrPSNR;
}
{
int byteCount; //DIB位图的字节数
int i;
// LPBITMAPINFOHEADER lpbmi;
// lpbmi=(LPBITMAPINFOHEADER)lpSrcDIB;
// m_pSrcImgData=(LPBYTE)lpbmi+lpbmi->
biSize+sizeof(RGBQUAD)*lpbmi->
biClrUsed;
//计算图像信噪比
double temp1=0.0;
double temp2=0.0;
//处理8位灰度图像
if (m_nBitCount==8)
{
//计算整幅DIB位图的字节数
byteCount =m_imgHeight*m_imgWidth*m_nBitCount/8;
for( i=0; i<byteCount; i++)
{
temp1=temp1+(double)m_pImgData[i]*m_pImgData[i];
temp2=temp2+(double)(m_pImgData[i]-
m_pSrcImgData[i])*(m_pImg Data[i]-m_pSrcImgData[i]);
}
}
else
{
AfxMessageBox("只能处理8位灰度图像!");
return "ERROR";
}
double SNR=temp1/temp2;
SNR=10*log10(SNR);
CString StrSNR;
StrSNR.Format("%f",SNR);
return StrSNR;
}
CString CImgEnhance::PSNR(unsigned char* m_pSrcImgData)
{
int byteCount; //DIB位图的字节数
int i;
//计算图像峰值信噪比
double temp1=0.0;
double temp2=0.0;
//处理8位灰度图像
if (m_nBitCount==8)
{
//计算整幅DIB位图的字节数
byteCount =m_imgHeight*m_imgWidth*m_nBitCount/8;
for( i=0; i<byteCount; i++)
{
temp1=temp1+(double)m_pImgData[i]*m_pImgData[i];
temp2=temp2+(double)(m_pImgData[i]
-m_pSrcImgData[i])*(m_pImg Data[i]-m_pSrcImgData[i]);
}
}
else
{
AfxMessageBox("只能处理8位灰度图像!");
return "ERROR";
}
double PSNR=m_imgHeight*m_imgWidth/temp2;
PSNR=10*log10(255*255*PSNR); //PSNR即为峰值信噪比
CString StrPSNR;
StrPSNR.Format("%f",PSNR);
return StrPSNR;
}
追问
好复杂啊,看不懂
追答
http://zhidao.baidu.com/question/274698634.html
看看这个吧,可以用的,我求的峰值信噪比
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
东莞大凡
2024-11-19 广告
2024-11-19 广告
Halcon标定板是机器视觉、图像测量等领域的专业标定工具,具有高精度、高稳定性的特点。其图案设计精确,能够校正镜头畸变,确定物理尺寸与像素间的转换关系,并建立相机成像的几何模型。我司生产的Halcon标定板,定位精度高达0.001mm,兼...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询