Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- do
- {
- for (int i = 0; i < bmp.Width; i++)
- {
- for (int j = 0; j < bmp.Height; j++)
- {
- for (int l = 0; l < 3; l++)
- {
- Membership[i, j, l] = MembershipNew[i, j, l];
- }
- }
- }
- // compute centers
- double sumtion = 0, sumtion1 = 0;
- for (int k = 0; k < c; k++)
- {
- for (int i = 0; i < bmp.Width; i++)
- {
- for (int j = 0; j < bmp.Height; j++)
- {
- for (int l = 0; l < c; l++)
- {
- double sum = Membership[i, j, k] * y[i, j] * 1.6;
- sumtion += Math.Pow(sum, y[i, j]);
- sumtion1 += Math.Pow(Membership[i, j, k], 1.6);
- }
- }
- }
- center[k] = sumtion / sumtion1;
- }
- MessageBox.Show("OK_3");
- for (int i = 0; i < bmp.Width; i++)
- {
- for (int j = 0; j < bmp.Height; j++)
- {
- for (int k = 0; k < c; k++)
- {
- Dik[i, j, k] = y[i, j] - center[k];
- }
- }
- }
- //mebership
- o = 0.0;
- for (int k = 0; k < c; k++)
- {
- for (int i = 0; i < bmp.Width; i++)
- {
- for (int j = 0; j < bmp.Height; j++)
- {
- for (int l = 0; l < c; l++)
- {
- o = Dik[i, j, k] / Dik[i, j, l];
- o += Math.Pow(o, 2 / 1 - 1.6);
- }
- MembershipNew[i, j, k] = 1 / o;
- }
- }
- }
- MessageBox.Show("OK_4");
- asa = member();
- cc++;
- } while (cc<2|| member()==true);
- // FCM
- //tmp = new Bitmap(bmp.Width, bmp.Height);
- //for (int i = 0; i < bmp.Width; i++)
- //{
- // for (int j = 0; j < bmp.Height; j++)
- // {
- // for (int k = 0; k < c; k++)
- // {
- // var x = Color.FromArgb(Convert.ToInt32(MembershipNew[i, j, k]), Convert.ToInt32(MembershipNew[i, j, k]), Convert.ToInt32(MembershipNew[i, j, k]));
- // tmp.SetPixel(i, j, x);
- // }
- // }
- //}
- //pictureBox6.Image = tmp;
- }
- public Boolean member()
- {
- int z = 0;
- bool [,]meb =new bool [tmp.Width,tmp.Height];
- dd = new double[c];
- double max = 0;
- for (int i = 0; i < tmp.Width; i++)
- {
- for (int j = 0; j < tmp.Height; j++)
- {
- do
- {
- dd[z] = MembershipNew[i, j, z] - Membership[i, j, z];
- } while (z < c);
- max = dd[0];
- for( z = 1; z <= c; z++)
- if (max < dd[z])
- max = dd[z];
- if(max< 0.001)
- {
- meb[i, j] = true;
- }
- else
- {
- meb[i, j] = false;
- }
- z++;
- }
- }
- bool Su = true;
- z = 0;
- for (int i = 0; i < tmp.Width; i++)
- {
- for (int j = 0; j < tmp.Height; j++)
- {
- if (meb[i, j] == false)
- Su = false;
- Su = false;
- break;
- }
- }
- z++;
- return Su;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement