
Definicion de colores por pixeles
#1
Escrito 07 marzo 2012 - 07:47
No se si lo que se me ocurre sera posible, una tontería o simplemente con delphi no se puede hacer, pero de todos modos pregunto por si acaso sabéis algo al respecto:
Supongamos que tengo una foto en la cual aparece un color, por ejemplo naranja.
Sabemos que el naranja es la mezcla de rojo y amarillo, pero hay diferentes tonos de naranja.
Si se pudiera pixelear la foto tal vez podríamos ver una cantidad determinada de amarillo y otra de rojo, esto haría el tono especifico.
Que me gustaría lograr:
Un programa que contando con una foto pixeleada pudiera definir tal vez por centímetro cuadrado la cantidad de puntos de un color u otro y sacar un porcentaje de cada uno de ellos.
Se podrá hacer ?
Se que esta fuera de mis manos por eso si se pudiera hacer me gustaría un ejemplo o algo así.
Os dejo la inquietud a ver si se puede lograr algo.
Gracias de antemano
Saludos
#2
Escrito 07 marzo 2012 - 08:08
Eso no es difícil de hacer en delphi. Tenemos que barrer la imagen punto a punto y determinar cada pixel y estudiar la candidad de cada color primario desde 0 a 255. Para ello no hace falta una foto pixelada.
Si deseas obtener colores no primarios es mas complicado, habría que determinar que color estudiar y en que banda de tonos lo consideramos a ese color, para luego barrer la foto.
Si te contentas con fotos pixeladas, una posibilidad es pasarla a 256 colores y estudiar sólo la paleta del bitmap...
En delphi si se pueden hacer ese tipo de cosas.

Saludos.
#3
Escrito 07 marzo 2012 - 09:49
Saludos
#4
Escrito 07 marzo 2012 - 10:46
Amigo Escafandra si es algo asi, lo de pixeles solo se me ocurrió por desconocimiento.No se si te entiendo bien. ¿Deseas sacar el porcentaje de rojo, azul y verde de una imagen?.
Eso no es difícil de hacer en delphi. Tenemos que barrer la imagen punto a punto y determinar cada pixel y estudiar la candidad de cada color primario desde 0 a 255. Para ello no hace falta una foto pixelada.
Si deseas obtener colores no primarios es mas complicado, habría que determinar que color estudiar y en que banda de tonos lo consideramos a ese color, para luego barrer la foto.
Si te contentas con fotos pixeladas, una posibilidad es pasarla a 256 colores y estudiar sólo la paleta del bitmap...
En delphi si se pueden hacer ese tipo de cosas.
Saludos.
Creo que en algunos casos los colores no son primarios, pero no lo se.
Si amigo, es exactamente eso, un sistema de igualación de colores.¿Será que quieres hacer un sistema que iguale colores ?
Saludos
Que pueda tomar una foto a un color determinado y que me indique que mezcla de colores lo compuso.
Se podrá ?.
Me podríais dar un ejemplo funcional en delphi ?.
Os agradezco la ayuda.
Saludos
#5
Escrito 07 marzo 2012 - 11:18
#6
Escrito 07 marzo 2012 - 12:17
Acabo de ver este ejemplo de Seoane y me parece que me va con lo que necesito.
Si tenéis otras ideas decidlo.

Saludos
#7
Escrito 07 marzo 2012 - 12:22
Hola
Acabo de ver este ejemplo de Seoane y me parece que me va con lo que necesito.
Si tenéis otras ideas decidlo.
Saludos
No veo el ejemplo, quizás no pusiste el enlace.
Te pongo un ejemplo básico que analiza un Bitmap de 24 bits y encuentra el % de sus colores primarios:
procedure ColorAnalizator(Bitmap: TBitmap; var r, g, b: Extended); var l, x, T: integer; P: PByte; begin r:=0; g:=0; b:=0; for l := 0 to Bitmap.Height - 1 do begin P := Bitmap.ScanLine[l]; x:=0; repeat b:= b+P^; inc(P); g:= g+P^; inc(P); r:= r+P^; inc(P); inc(x); until x = Bitmap.Width; end; T:= Bitmap.Height*Bitmap.Width*255; if T = 0 then exit; r:= (r / T)*100; g:= (g / T)*100; b:= (b / T)*100; end;
Ejemplo de uso:
var r, g, b: Extended; begin ColorAnalizator(Image1.Picture.Bitmap, r, g, b); end;
Saludos.
#8
Escrito 07 marzo 2012 - 12:41
Gracias amigo.
Estaba viendo un pantone de colores y los codigos son diferentes, no por numeros sino por letras.
e
f
s
Algo asi.
Se podra conseguir saber a que letra pertenece cada color RGB?.
Saludos
#9
Escrito 07 marzo 2012 - 12:47
Quizás analizando bitmaps de colores primarios conocidos rojo, verde y azul puros. Los haces con el Paint y comparas los resultados.Se podra conseguir saber a que letra pertenece cada color RGB?.
Saludos.
#10
Escrito 07 marzo 2012 - 01:01
Gracias amigo.
Otra pregunta:
El rgb me dice los numeros que corresponden a cada color, pero no me dice las proporciones de cada uno, como puedo saberlas ?.
Saludos
#11
Escrito 07 marzo 2012 - 01:12
rgb es un código de color. Cada color se representa en un byte (8 bits) y el valor máximo que puede tener es 255, es decir los colores son mezclas de 256 tonalidades de los tres colores básicos.El rgb me dice los numeros que corresponden a cada color, pero no me dice las proporciones de cada uno, como puedo saberlas ?.
Para un color básico: percent = val*100/255.
El código que te puse calcula los porcentajes de cada color básico para el conjunto de un bitmap analizado.
Saludos.
#12
Escrito 07 marzo 2012 - 01:21
Mira la necesidad Caral, hablando en términos de impresión viene el modelo RGB y el CMYK, en algo tan simple como la paleta de Paint aparece además la matiz, la saturación y luminosidad de cada color.
Saludos!
#13
Escrito 07 marzo 2012 - 01:22
Corri el programa pero no se como mostrar el dato.
Como puedo o donde lo puedo mostrar ese valor tanto el rgb como el porcentaje ?
Disculpa tanta cosa, pero en esto estoy perdido.
Saludos
#14
Escrito 07 marzo 2012 - 01:25
procedure TForm1.Button1Click(Sender: TObject); var r, g, b: Extended; r1,g1,b1 : Byte; colorRGB : TColor; begin ColorAnalizator(Image1.Picture.Bitmap, r, g, b); r1 := trunc((255*r)/100); g1 := trunc((255*g)/100); b1 := trunc((255*b)/100); showMessage( format('Color RGB (%d,%d,%d)',[r1,g1,b1]) ); colorRGB := RGB(r1,g1,b1); Form1.Color := ColorRGB; end;
Saludos
Archivos adjuntos
#15
Escrito 07 marzo 2012 - 01:33
Gracias amigo.
El asunto es que como de esto no se nada estoy muy perdido.
A ver si me explico mejor.
Tengo que preparar ciertos colores.
Les tomo una foto y la pongo en el ordenador.
De ahi con vuestro codigo me sale el numero RGB que corresponde a ese color.
El asunto es:
Como se que cantidad (%) de pigmento necesito de cada color para hacer el color final ?.
En el pantone que tengo salen letras, no numeros y salen las cantidades en gramos de pigmento, pero este no me sirve para colores especiales, solo para los que tiene el pantone.
Saludos
#16
Escrito 07 marzo 2012 - 01:42
var
r, g, b: Extended;
Obtienes el porcentaje del color primario RGB, es decir, er el ejemplo que subi se ve lo siguiente:
r = rojo 33.33 %
g = verde 66.66 %
b = azul 50.98 %
Saludos
#17
Escrito 07 marzo 2012 - 01:45
Cantidad de cada color para obtener la unidad.
Saludos
#18
Escrito 07 marzo 2012 - 01:47
Como muestro ese dato amigo.
Si lo pongo en el showmessage me da un error.
Solo puedo ver el dato RGB.
Saludos
#19
Escrito 07 marzo 2012 - 01:48
Si amigo, cuanto necesito de rojo, verde, azul, amarillo etc para hacer otro color X.mmmmm, me parece que ya entiendo por donde va tu pregunta.
Cantidad de cada color para obtener la unidad.
Saludos
Saludos
#20
Escrito 07 marzo 2012 - 01:52
Hola
Como muestro ese dato amigo.
Si lo pongo en el showmessage me da un error.
Solo puedo ver el dato RGB.
Saludos
showMessage( format('Color RGB (%f,%f,%f)',[r,g,b]) );
Saludos