版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/ GrayShow.cpp: implementation of the CGrayShow class./ 灰灰灰灰灰灰灰灰灰灰 /#include "stdafx.h"#include "GrayShow.h"#include "math.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endif/ Construction/Destruction/CGrayShow:CGrayShow()PMatrixRD =
2、NULL; /45灰度度度度灰灰灰灰灰灰 PMatrixLD = NULL; /135灰度度度度灰灰灰灰灰灰 PMatrixV = NULL; /90灰度度度度灰灰灰灰灰灰 PMatrixH = NULL; /0灰度度度度灰灰灰灰灰灰/ ImageArray = NULL; /原原度原原原原原原/m_tOriPixelArray = NULL;/原原原原原原 /m_tResPixelArray = NULL;/参参原原原原/ m_dib = new CDib();distance = 5;FilterWindowWidth = 16;GrayLayerNum = 16; /初原初初初8个灰灰个
3、,可可可可 /这这灰灰灰灰这初GrayLayerNum×GrayLayerNumPMatrixH = new intGrayLayerNum*GrayLayerNum;PMatrixLD= new intGrayLayerNum*GrayLayerNum; PMatrixRD= new intGrayLayerNum*GrayLayerNum;PMatrixV = new intGrayLayerNum*GrayLayerNum;/ for(i=0; i<GrayLayerNum; i+)/ / PMatrixHi = new intGrayLayerNum;/ PMatrix
4、LDi= new intGrayLayerNum;/ PMatrixRDi= new intGrayLayerNum;/ PMatrixVi = new intGrayLayerNum;/ CGrayShow:CGrayShow()if(PMatrixRD)delete PMatrixRD ;if(PMatrixLD)delete PMatrixLD ; /135灰度度度度灰灰灰灰灰灰 if(PMatrixV)delete PMatrixV ; /90灰度度度度灰灰灰灰灰灰 if(PMatrixH)delete PMatrixH;/功功:装装原原 /参原:FilePathName原原图图图图图
5、 / void CGrayShow:LoadImage(CString &FilePathName)/ / / / int i,j;/ /检检检检初检,不初检不不不不不不 / if(m_tOriPixelArray !=NULL)/ / for(i=0; i<ImageHeight; i+)/ / delete m_tOriPixelArrayi;/ delete m_tResPixelArrayi;/ delete ImageArrayi;/ / / m_dib->Open(FilePathName);/ ImageWidth = m_dib->GetWidth()
6、;/ ImageHeight = m_dib->GetHeight();/ BYTE *colorTable;/ colorTable = (BYTE *)m_dib->m_pDibBits;/ int byteBitCount = m_dib->GetBiBitCount()/8;/ m_tOriPixelArray = new RGBQUAD*ImageHeight;/ m_tResPixelArray = new RGBQUAD*ImageHeight;/ ImageArray = new BYTE*ImageHeight;/ for(int l=0 ; l<Im
7、ageHeight; l+)/ / m_tOriPixelArrayl = new RGBQUADImageWidth;/ m_tResPixelArrayl = new RGBQUADImageWidth;/ ImageArrayl = new BYTEImageWidth;/ / int count = 0;/ for(i=ImageHeight-1; i>=0; i-)/ / for(j=0; j<ImageWidth; j+)/ / m_tOriPixelArrayij.rgbBlue =colorTablecount+;/ m_tOriPixelArrayij.rgbGr
8、een=colorTablecount+;/ m_tOriPixelArrayij.rgbRed =colorTablecount+;/ m_tOriPixelArrayij.rgbReserved = 0;/ m_tResPixelArrayij=m_tOriPixelArrayij;/ ImageArrayij = (BYTE)(unsigned int)m_tOriPixelArrayij.rgbBlue/ +(unsigned int)m_tOriPixelArrayij.rgbGreen/ +(unsigned int)m_tOriPixelArrayij.rgbRed)/3);/
9、count += byteBitCount-3;/ / count += (4-(ImageWidth*byteBitCount)%4)%4;/ /函原功功:计灰计计计计 /参原:FeatureEnergy功能 / FeatureEntropy熵 / FeatureInertiaQuadrature惯惯灰 / FeatureCorrelation相相 / FeatureLocalCalm局局局局 / pMatrix灰灰灰灰 / dim灰灰灰灰度共原 /void CGrayShow:ComputeFeature(double &FeatureEnergy, double &Fea
10、tureEntropy,double &FeatureInertiaQuadrature, double &FeatureCorrelation, double &FeatureLocalCalm, int* pMatrix, int dim)int i,j;double *pdMatrix;pdMatrix = new doubledim*dim;int total = 0;for(i=0; i<dim; i+)for(j=0; j<dim; j+)total += pMatrixi*dim+j;for(i=0; i<dim; i+)for(j=0;
11、 j<dim; j+)pdMatrixi*dim + j = (double)pMatrixi*dim + j/(double)total;FeatureEnergy = 0.0;FeatureEntropy = 0.0;FeatureInertiaQuadrature = 0.0;FeatureLocalCalm = 0.0; /计灰功能、熵、惯惯灰、局局局局 for(i=0; i<dim; i+)for(j=0; j<dim; j+) /功能 FeatureEnergy += pdMatrixi*dim+j*pdMatrixi*dim+j; /熵 if(pdMatrixi
12、*dim+j>1e-12)FeatureEntropy -= pdMatrixi*dim+j*log(pdMatrixi*dim+j); /惯惯灰 FeatureInertiaQuadrature += (double)(i-j)*(double)(i-j)*pdMatrixi*dim+j; /局局局局 FeatureLocalCalm += pdMatrixi*dim+j/(1+(double)(i-j)*(double)(i-j); /计灰ux double ux = 0.0;double localtotal = 0.0;for(i=0; i<dim; i+)localtot
13、al = 0.0;for(j=0; j<dim; j+)localtotal += pdMatrixi*dim+j;ux += (double)i * localtotal; /计灰uy double uy = 0.0;for(j=0; j<dim; j+)localtotal = 0.0;for(i=0; i<dim; i+)localtotal += pdMatrixi*dim+j;uy += (double)j * localtotal; /计灰sigmax double sigmax = 0.0;for(i=0; i<dim; i+)localtotal = 0
14、.0;for(j=0; j<dim; j+)localtotal += pdMatrixi*dim+j;sigmax += (double)(i-ux) * (double)(i-ux) * localtotal; /计灰sigmay double sigmay = 0.0;for(j=0; j<dim; j+) localtotal = 0.0;for(i=0; i<dim; i+)localtotal += pdMatrixi*dim+j;sigmay += (double)(j-uy) * (double)(j-uy) * localtotal;/计灰相相 Featur
15、eCorrelation = 0.0;for(i=0; i<dim; i+)for(j=0; j<dim; j+)FeatureCorrelation += (double)(i-ux) * (double)(j-uy) * pdMatrixi*dim+j;FeatureCorrelation /= sigmax;FeatureCorrelation /= sigmay;delete pdMatrix;pdMatrix = NULL;/功功:计灰灰灰灰灰 /参原:LocalImage用用计灰度局局计计用用原原 / window局局计计用用局灰 /void CGrayShow:Com
16、puteMatrix(LPBYTE LocalImage,const WORD width,/local image 度局 const WORD height,/local image 度的 int i_count, /rowint j_count, /col int window )memset(PMatrixH,0,GrayLayerNum*GrayLayerNum*sizeof(int);memset(PMatrixLD,0,GrayLayerNum*GrayLayerNum*sizeof(int); memset(PMatrixRD,0,GrayLayerNum*GrayLayerNu
17、m*sizeof(int);memset(PMatrixV,0,GrayLayerNum*GrayLayerNum*sizeof(int);int i,j;/计灰0灰度灰灰灰灰灰 for( i=i_count; i<i_count+window; i+)for( j=j_count; j<j_count+window-distance; j+)LPBYTE lptemp = LocalImage + i*width*3 + j*3; BYTE gray_I_J =BYTE(*(lptemp)*0.114 + *(lptemp+1)*0.587+*(lptemp+2)*.299)/(
18、256/GrayLayerNum); LPBYTE lpdistance = lptemp +distance*3;BYTE gray_I_Distance = BYTE(*(lpdistance)*0.114+*(lpdistance+1)*0.587+*(lpdistance+2)*0.299)/(256/GrayLayerNum);PMatrixHgray_I_J*GrayLayerNum + gray_I_Distance += 1; PMatrixHgray_I_Distance*GrayLayerNum + gray_I_J += 1;/计灰90灰度灰灰灰灰灰 for(i=i_co
19、unt; i<i_count+window-distance; i+)for(j=j_count; j<j_count+window; j+) LPBYTE lptemp = LocalImage + i*width*3 + j*3;BYTE gray_I_J =BYTE(*(lptemp)*0.114 + *(lptemp+1)*0.587+*(lptemp+2)*.299)/(256/GrayLayerNum);LPBYTE lpdistance = /*lptemp +distance*3*/LocalImage + (i+distance)*width*3 + j*3;BY
20、TE gray_I_Distance = BYTE(*(lpdistance)*0.114+*(lpdistance+1)*0.587+*(lpdistance+2)*0.299)/(256/GrayLayerNum); PMatrixVgray_I_J*GrayLayerNum + gray_I_Distance += 1;PMatrixVgray_I_Distance*gray_I_J + gray_I_J += 1;/计灰135灰度灰灰灰灰灰 for(i=i_count; i<i_count+window-distance; i+)for(j=j_count; j<j_cou
21、nt+window-distance; j+)int newi, newj;newi = i+distance;newj = j+distance;LPBYTE lptemp = LocalImage + i*width*3 + j*3;BYTE gray_I_J =BYTE(*(lptemp)*0.114 + *(lptemp+1)*0.587+*(lptemp+2)*.299)/(256/GrayLayerNum);LPBYTE lpdistance = /*lptemp +distance*3*/LocalImage + (newi)*width*3 + newj*3;BYTE gray
22、_I_Distance = BYTE(*(lpdistance)*0.114+*(lpdistance+1)*0.587+*(lpdistance+2)*0.299)/(256/GrayLayerNum); PMatrixLDgray_I_J*GrayLayerNum + gray_I_Distance += 1;PMatrixLDgray_I_Distance*gray_I_J + gray_I_J += 1; /计灰45灰度灰灰灰灰灰 for(i=i_count+distance; i<i_count+window; i+) for(j=j_count; j<j_count+w
23、indow-distance; j+) int newi, newj;newi = i-distance;newj = j+distance;LPBYTE lptemp = LocalImage + i*width*3 + j*3;BYTE gray_I_J =BYTE(*(lptemp)*0.114 + *(lptemp+1)*0.587+*(lptemp+2)*.299)/(256/GrayLayerNum);LPBYTE lpdistance = /*lptemp +distance*3*/LocalImage + (newi)*width*3 + newj*3;BYTE gray_I_Distance = BYTE(*(lpdistance)*0.114+*(lpdistance+1)*0.587+*(lpdistance+2)*0.299)/(256/GrayLayerNum);PMatrixRDgr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广州发展集团股份有限公司招聘备考题库及参考答案详解1套
- 2025年巨野县高铁北站公开招聘客运服务人员备考题库及参考答案详解一套
- 2026年徐州市第一人民医院公开招聘在编医务人员21人(第二批)备考题库参考答案详解
- 2026年中国葛洲坝集团第一工程有限公司公开招聘备考题库及完整答案详解一套
- 2026年中车数智科技(雄安)有限公司招聘备考题库及一套完整答案详解
- 2026年宁夏京银智慧新能源有限公司招聘备考题库完整参考答案详解
- 2026年中国农业科学院农产品加工研究所关于招聘果蔬加工智造与营养健康创新团队执行首席的备考题库及参考答案详解1套
- 2026年国药(湖北)口腔医院有限公司招聘备考题库及参考答案详解1套
- 2026年中铝(郑州)铝业有限公司招聘备考题库及完整答案详解1套
- 2026年北京同仁堂鄂尔多斯市药店有限公司正在招聘备考题库参考答案详解
- 感术行动培训课件
- 2025年脱毒马铃薯新品种示范基地建设工作方案
- 客运企业事故管理制度
- 2025年烟机设备机械修理工(二级)技能等级认定考试题库(含答案)
- 2025年上海市崇明区高考英语一模试卷
- 公司过账协议合同
- 中国古代石刻艺术赏析
- 《资治通鉴》与为将之道知到课后答案智慧树章节测试答案2025年春武警指挥学院
- 中班美术活动:给小鱼穿新衣
- 建国后的薪酬改革历史
- 《高速公路服务区开放设置技术要求》
评论
0/150
提交评论