FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
|||
|
|||
hola,
si haces algo como
tendras un filtro de contraste bastante aproximado. Solo hara falta aplicarlo antes. Si lo que quieres son deducir la direccion de degradado del color, puedes hacerlo tambien buscando el punto de maximo brillo (mediante lluminositat), restar con la luminosidad de los adyacentes, y aquel donde la diferencia (el gradiente) sea maximo, es el mas proximo al borde, aunque no creo que lo necesites. |
#22
|
||||
|
||||
Off-topic
Coso quería preguntarte, esto como off-topic, ¿porqué el uso de Pixels[]?
He visto que en otros hilos que tratas sobre el tema de pixeles, en tus códigos usas Pixels. Yo me acostumbré a emplear Scanline. Tal vez se necesita un poco más de código pero me parece que se consigue mejor perfomance. Yo he probado con imagenes relativamente grandes y el uso de scanLine por sobre Pixels se nota. Saludos, |
#23
|
|||
|
|||
para q se entienda el algoritmo tansolo, luego si se tiene que optimizar, si se puede usar scanline o directamente operar en memoria
|
#24
|
|||
|
|||
Cita:
procedure Comic(Img: TPicture; Umbral: Integer); var Bitmap: TBitmap; P1,P2,P3,P4: PByte; i,j: Integer; begin Bitmap:= TBitmap.Create; try Bitmap.Width:= Img.Width; Bitmap.Height:= Img.Height; Bitmap.Canvas.Draw(0,0,Img.Graphic); if not (Img.Graphic is TBitmap) then Img.Assign(Bitmap); Img.Bitmap.PixelFormat:= pf24bit; Bitmap.PixelFormat:= pf24bit; for j:= -1 to Bitmap.Height - 2 do begin // Ajustamos el borde superior if j < 0 then P1:= Bitmap.ScanLine[0] else P1:= Bitmap.ScanLine[j]; P2:= Bitmap.ScanLine[j+1]; // Ajustamos el borde inferior if j > Bitmap.Height - 3 then P3:= Bitmap.ScanLine[Bitmap.Height - 1] else P3:= Bitmap.ScanLine[j+2]; P4:= Img.Bitmap.ScanLine[j+1]; // Primera columna PFila(P4)[1]:= Calcular(PFila(P1),PFila(P2),PFila(P3),1,2,Umbral); for i:= 0 to Bitmap.Width - 3 do begin PFila(P4)[2]:= Calcular(PFila(P1),PFila(P2),PFila(P3),2,3,Umbral); inc(P1,Sizeof(TRGB)); inc(P2,Sizeof(TRGB)); inc(P3,Sizeof(TRGB)); inc(P4,Sizeof(TRGB)); end; // Ultima columna PFila(P4)[2]:= Calcular(PFila(P1),PFila(P2),PFila(P3),2,2,Umbral); end; finally Bitmap.Free; end; end; Esto que fue postado aqui da un resultado mui bueno, e intentado trabajar con el primer algoritmo que me passaste pero no logre exito con el, tbm é intentado el recursivo pero tampoco me dio resultados, cae que parece simples, pero ya veo q no lo es tanto |
#25
|
|||
|
|||
procedure limiar(ABmp: TBitmap);
var c: TCursor; x, y: Integer; R, G, B: Byte; ColorRGB: LongInt; HCLR: Byte; begin Li := Limiarizar; // variable global q recibe el valor de Limiar c := Screen.Cursor; Screen.Cursor := crHourGlass; for y := 0 to (ABmp.Height - 1) do for x := 0 to (ABmp.Width - 1) do begin ColorRGB := ColorToRGB(ABmp.Canvas.Pixels[x, y]); // obtém as cores da paleta R := GetRValue(ColorRGB); G := GetGValue(ColorRGB); B := GetBValue(ColorRGB); // compara valor HCLR := 0; if R > Li then HCLR := 255; if G > Li then HCLR := 255; if B > Li then HCLR := 255; // converte para tons de cinza R := HCLR; G := HCLR; B := HCLR; // aplica a nova cor ao pixel ABmp.Canvas.Pixels[x, y] := PaletteRGB(R, G, B); end; Screen.Cursor := c; end; Consiste que con esto conseguimos binarizar la imagen de acuerdo con la necessidad de cada, o sea que como una imagen en escala de grizes varia de 0 a 255 ejemplo de lmiar 127 todo aquells pixels q estean abajo de 127 van a 0 (negro) y todos los que estean arriba de 127 van a 255(blanco), esto da resultados mas preciso dependiendo de la imagen, al resultado de esto estoy intentando implementar algo |
#26
|
||||
|
||||
Hola Cesar Junior,
¿Avanzaste en algo? Cuando coloques código, por favor usa la etiquetas [ DELPHI ] [ /DELPHI ] (sin los espacios) para que el código se resalte mejor. Saludos, |
#27
|
|||
|
|||
es extraño, si consigues pasarlo todo a manchas blancas, el primer algoritmo te las cuenta...¿porque te falla?
|
#28
|
|||
|
|||
En realidad no me las cuenta, me la passa todo lo que es blanco a negro, y depues dibuja una elipse Randon, q la passa a rojo, es extraño tenter cambiar algunas cosas pero no me dio resultado
|
#29
|
|||
|
|||
ah....vamos, que no entendiste nada
|
#30
|
|||
|
|||
El algoritmo esta integrado en un ejemplo que pinta todo de negro y luego dibuja unas elipses blancas para contarlas. Luego recorre cada pixel y si encuentra alguno de color blanco, lo pinta de otro color y aumenta el contador de zonas. La parte util para ti supongo que tendria que ser aquella que recorre cada pixel y rellena, y no la que dibuja las elipses.
|
#31
|
|||
|
|||
Si, en verdad que tenes razon, es que soy aprendiz, y me di cuenta de q no estava entendiendo nada, rs.. hize unos experimentos com grano de maíz, y tu algoritmo funciona muy bien, solo ay q estudiar una forma de mejorar la imagen cuando loa sgranos estan muy juntos me da un valor aproximado, pero te agradesco mucho q en reaqlidad funciona muy bien!!! |
#32
|
|||
|
|||
Y quedo asi
Esto funciona mui bien, cuando la imagen esta bien definida |
#33
|
|||
|
|||
Cita:
Esto de definir un tamanho con un algoritmo se ve interessante que camino devo seguir? |
#34
|
|||
|
|||
Hola de nuevo Cesar Junior,
te ira contando los tamaños |
#35
|
|||
|
|||
Cita:
Sensacional! esto funciona de maravilha!!! ahora voia definir cuales son los intereses para la contage, felicitaciones!!! se nota que para ti es de una simplicidad, cuando ya para mi parecia un monstro de 7 cabezas, asi q tenga los resultados posto aqui para mostrarles, des de ya gracias a todos con las ideas el tiepo tomado, a Coso, [DELPHIUS], seoane!!! |
#36
|
|||
|
|||
de nada
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cargar las imagens, iconos, etc. desde un *.res | Negriz | C++ Builder | 2 | 15-05-2008 19:41:58 |
XML atraves de internet Ayuda | Sr_leo | Internet | 5 | 14-04-2008 02:07:54 |
Conversor de imagens | roman | Windows | 20 | 29-03-2007 23:01:30 |
Debug de VCL através de paquetes | roman | Varios | 2 | 08-09-2005 23:38:04 |
Imagens vía xml | marto | Internet | 8 | 12-08-2004 01:27:56 |
|