BinhoW 0 Denunciar post Postado Novembro 9, 2009 Ola pessoal sou novo aqui, e estou com problems em c# utilizando windows forms... Preciso gerar um histograma na escala RGB, por favor deêm uma olhada abaixo, já consegui fazer o histograma em escala de cinza: private void histograma(string canal) { Bitmap histo = new Bitmap(256, 100); int[] frequencia = new int[256]; //for para rechear o vetor freq de zero// for (int i = 0; i < 256; i++) { frequencia[i] = 0; } Bitmap bmp = new Bitmap(imageOrigin); for (int x = 0; x < bmp.Width; x++) for (int y = 0; y < bmp.Height; y++) { //Andar na imagem e depois Color k = bmp.GetPixel(x, y); if (canal == "RGB")//canal em grayscale { byte gray = (byte)(k.R*0.30 + k.G*0.59 + k.B*0.11 ); frequencia[gray]++; } if (canal == "R")//canal em red { frequencia[k.R]++; } if (canal == "G")//canal em green { frequencia[k.G]++; } if (canal == "B")//canal em blue { frequencia[k.B]++; } } //for para achar o MAX e MIN do frequencia int max = frequencia.Max(); int min = frequencia.Min(); int escala; // int escala = (int)(Math.Log10(frequencia[]) * 100 / Math.Log10(max)); for (int i = 0; i < 256; i++) { if (frequencia[i] > 0) { escala = (int)(Math.Log10(frequencia[i]) * 100 / Math.Log10(max)); for (int g = 100 - escala; g < 100; g++) { //histo.SetPixel(i, g, Color.FromArgb(i, i, i)); histo.SetPixel(i, g, Color.FromArgb(i, i, i)); } } } pictureBox1.Image = new Bitmap(histo); //int xx = 0; // } Compartilhar este post Link para o post Compartilhar em outros sites
Juliano.net 2 Denunciar post Postado Novembro 9, 2009 Veja se este link te ajuda: http://software.intel.com/en-us/forums/intel-integrated-performance-primitives/topic/49493/ Compartilhar este post Link para o post Compartilhar em outros sites