资源简介
读取常见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个文件信息
- 上一篇:图像处理毕业论文含程序、论文、答辩ppt、翻译等一套
- 下一篇:湍流的模拟
相关资源
- 遥感图像几何校正模型探讨
- SVR算法程序可运行
- 计算机图形学 边填充算法实现代码
- 福建师范大学历年算法考卷
- 栈的实现及应用,六种基本算法
- Bresenham算法绘制线段并利用“橡皮筋
- 介绍几种压缩算法及《笨笨数据压缩
- 改进的BP神经网络算法
- A星算法_原理讲解_例子
- 云模型的相关算法cloud
- 旋转矩阵求欧拉角的简单算法
- 栅栏填充算法源码(VC)
- RSA算法源码
- 关联分析Apriori算法实现
- [免费]relax算法成像
- 操作系统 LRU算法 实验报告 及 程序代
- 分治法快速排序算法QuickSort C
- 现代谱估计算法 music ESPRIT 谐波分解
- MUSIC算法c 实现
- 007出纳管理系统 v7[1].5.94 算法注册机
- 克鲁斯卡尔算法C和C 实现代码
- capon波束形成算法-VC实现
- QGA 量子遗传算法
- 利用OpenGL写毛笔字算法
- 带头结点的单链表的c算法实现
- 自适应隐写算法wow
- 协同过滤算法源码
- RSA AES DES ECC加密算法源码
- 密码学课程设计:DES加密解密算法的
- 北航人工智能原理课大作业源代码,
评论
共有 条评论