• 大小: 4.04MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-18
  • 语言: 其他
  • 标签: 遥感  聚类  算法  

资源简介

读取常见bmp格式图像 利用k均值聚类 模糊C均值聚类对遥感图像进行分类分析

资源截图

代码片段和文件信息

// ClusterAnalysis.cpp: implementation of the CClusterAnalysis class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “ImageSeg.h“
#include “ClusterAnalysis.h“

#include “FuzzyClusterDLG.h“
#include “MOHUCDLG.h“
#include “ISODATADLG.h“
#include “math.h“
#include “CDib.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern BOOL CopyDIB(CDib* pDibSrc CDib* pDibDst);

CClusterAnalysis::CClusterAnalysis()
{

}

CClusterAnalysis::~CClusterAnalysis()
{
delete markDib;
markDib = NULL;
}
/********************************************************************************
函数名称:KMean()
传递参数:CDib *pDib int nClusterCount
实现功能:采用K均值聚类算法实现对8bit灰度图像和24bit彩色图像的分割
返回值类型:BOOL
*********************************************************************************/
BOOL CClusterAnalysis::KMean(CDib *pDib int nClusterCount)
{
m_Cluster = new Cluster[nClusterCount];
m_Cluster3 = new ColorCluster[nClusterCount];

  int i;                              //循环变量
int sizex;                            
int sizey;

BOOL bCenterChanged;   //定义聚类中心是否更改标志
bCenterChanged = 1;

InitCluster(m_Cluster nClusterCount 256);  //初始化各类
 
markDib = new CDib; 
 
int nCacuCount;
nCacuCount = 0;
 
::SetCursor(::LoadCursor(NULL IDC_WAIT));   //将鼠标箭头置为等待状态
::CopyDIB(pDib markDib);  //mark every pixel‘s cluster

while(bCenterChanged)  //如果聚类中心没有改变则退出循环
{
//////////////////////////////////////
//彩色图像各类的RGB分量象素个数及象素总值置为0
for(i = 0; i < nClusterCount; i++)
{
m_Cluster3[i].B.pixCount = 0;
m_Cluster3[i].B.valueSum = 0;

m_Cluster3[i].G.pixCount = 0;
m_Cluster3[i].G.valueSum = 0;

m_Cluster3[i].R.pixCount = 0;
m_Cluster3[i].R.valueSum = 0;
}
        ///////////////////////////////////////

SingleClassify(pDib m_Cluster nClusterCount markDib); //分别对各样本进行分类
bCenterChanged = CacuNewCenter(m_Cluster nClusterCount); //计算新的聚类中心并判断聚类中心是否改变
      nCacuCount++;  //迭代次数自增1次
}

::SetCursor(::LoadCursor(NULL IDC_ARROW));  //置鼠标为箭头符号
    ShowCluster(pDib m_Cluster nClusterCount markDib);  //显示聚类结果
 
 
return 1;
}

/**************************************************
函数名称:InitCluster()
传递参数:Cluster *cluster int nCount int nRange
实现功能:初始化各类的聚类中心,可用于对8bit和24bit图像进行初始化
返回值类型:viud
*****************************************************/
void CClusterAnalysis::InitCluster(Cluster *cluster int nCount int nRange)
{
int k;
int nInterval;
nInterval = nRange / (nCount + 1);  //Caculate the interval between each cluster 


for(k = 1; k < nCount + 1; k++)
{
cluster[k - 1].center = nInterval * k; 
cluster[k - 1].pixCount = 0;
cluster[k - 1].valueSum = 0;

 
//for the 24bit BMP

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     251078  2014-11-26 19:46  ImageSeg\0遥感灰度图像(500×5001).bmp

     文件     251078  2014-11-26 19:46  ImageSeg\0遥感灰度图像(500×500).bmp

     文件     251078  2006-10-11 08:51  ImageSeg\0遥感灰度图像(500×500)1

     文件     251078  2006-10-11 08:52  ImageSeg\0遥感灰度图像(500×500)1.bmp

     文件      52924  2014-11-26 19:15  ImageSeg\CDIB.CPP

     文件       4125  2005-07-04 18:41  ImageSeg\CDIB.H

     文件       1262  2006-09-21 21:51  ImageSeg\CloudConcept.txt

     文件      26512  2006-07-17 11:32  ImageSeg\ClusterAnalysis.cpp

     文件       1816  2006-05-11 18:19  ImageSeg\ClusterAnalysis.h

     文件      74563  2014-11-26 19:15  ImageSeg\Debug\CDIB.obj

     文件          0  2014-11-26 19:15  ImageSeg\Debug\CDIB.sbr

     文件      41107  2014-11-25 16:35  ImageSeg\Debug\ClusterAnalysis.obj

     文件          0  2014-11-25 16:35  ImageSeg\Debug\ClusterAnalysis.sbr

     文件      11406  2014-11-25 16:35  ImageSeg\Debug\FuzzyClusterDLG.obj

     文件          0  2014-11-25 16:35  ImageSeg\Debug\FuzzyClusterDLG.sbr

     文件    5202944  2014-11-26 19:15  ImageSeg\Debug\ImageSeg.bsc

     文件     168043  2014-11-26 19:15  ImageSeg\Debug\ImageSeg.exe

     文件     431104  2014-11-26 19:15  ImageSeg\Debug\ImageSeg.ilk

     文件      29887  2014-11-25 16:35  ImageSeg\Debug\ImageSeg.obj

     文件    6871256  2014-11-25 16:35  ImageSeg\Debug\ImageSeg.pch

     文件     558080  2014-11-26 19:15  ImageSeg\Debug\ImageSeg.pdb

     文件       8816  2014-11-25 16:35  ImageSeg\Debug\ImageSeg.res

     文件          0  2014-11-25 16:35  ImageSeg\Debug\ImageSeg.sbr

     文件      17025  2014-11-25 16:35  ImageSeg\Debug\ImageSegDoc.obj

     文件          0  2014-11-25 16:35  ImageSeg\Debug\ImageSegDoc.sbr

     文件      36759  2014-11-25 16:35  ImageSeg\Debug\ImageSegView.obj

     文件          0  2014-11-25 16:35  ImageSeg\Debug\ImageSegView.sbr

     文件      11477  2014-11-25 16:35  ImageSeg\Debug\ISODATADLG.obj

     文件          0  2014-11-25 16:35  ImageSeg\Debug\ISODATADLG.sbr

     文件      11194  2014-11-25 16:35  ImageSeg\Debug\KMeansDlg.obj

............此处省略54个文件信息

评论

共有 条评论