// 9.23.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include<stdio.h>
#include<cmath>
#include<cv.h>
#include<highgui.h>
#include<time.h>
#include<iostream>
using namespace std;
#define random(x) (rand()%x)
#define T 10
#define MaxK 10
/*声明函数*/
void Init_center();
void Calculate_mid();
void Update_membership1();
//void Update_membership2();
void Calculate_distanceb();
void Update_center();
void Calculate_distancea();
void Cout();
void Show_Image();
static double center[MaxK+1];
static double u[2000][2000][MaxK+1];
static double d1[2000][2000][MaxK+1];
static double d2[2000][2000][MaxK+1],d3[2000][2000][MaxK+1];
static double dd[2000][2000][MaxK+1];
static double ddd[2000][2000][MaxK+1];
static double p[2000][2000];
static double all[1000][1000][MaxK];
static double a[1000][1000],averV;
IplImage *img;
uchar *r;
uchar *s;
void Init_center(int K)//初始化聚类中心
{
int a=256/K;
for(int t=1;t<=K;t++)
{
center[t]=random(a)+(t-1)*a;
cout<<center[t]<<"\t";
}
cout<<endl;
}
void Calculate_distancea(int K)/*计算距离1*/
{
for(int m=0;m<img->height;m++)
for(int n=0;n<img->width;n++)
for(int j=1;j<=K;j++)
{
dd[m][n][j]=abs(r[m*img->widthStep+n]-center[j]);
}
}
void Calculate_mid(int m,int Q) //求均值
{
for (int x=0;x<img->height;x++)
for (int y=0;y<img->width;y++)
{
p[x][y]= r[x*img->widthStep+y];
}