![]() |
![]() |
| Paypal | 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 |
|
|
|
#1
|
||||
|
||||
|
El algoritmo de coso funciona, y funcionará mientras que las figuras sean simples.
La cuestión es que cuando se está llevando el conteo de colonias (me gustaría saber de que: virus, hormigas, células) no es tan simple puesto que las figuras tienden ser un tanto complejas, encimarse, agruparse, etc. Emplear el FloodFill "a secas" como lo emplea coso puede conducir a un conteo erróneo, y se necesita de un algoritmo que permita determinar las semejanzas a la forma del objeto de estudio. ¿Y si consideramos la posibilidad de que la imagen tenga ruido? Una lectura basada en el algoritmo de coso es posible que arroje falsos positivos. Otro motivo más para saber si es necesario un algoritmo de predicción, tal como lo da a entender lo que busca Cesar Junior. Debido a estas cuestiones es que le he pedido a Cesar Junior que nos aporte más información del tema. Saludos, |
|
#2
|
|||
|
|||
|
en el caso que hubiese ruido, se tendria q muestrear la imagen aplicando un filtro de contrastes. En el caso q estuviesen solapadas, con ruido, y del mismo color, seria muy muy dificil que una maquina lo adivinase. Lo mejor seria en ese caso que fuesen imagenes de distinto color, o bien tener una idea aproximada de su forma, o bien de su tamaño, para asi acotar el area de cada entidad. Tambien se podria preparar una red neuronal para, tras sucesivas iteraciones, encontrar una media de forma, tamaño, color de cada objeto y asi intentar predecir el numero de colonias (predecir, pues no seria un algoritmo determinante) existente en la imagen.
|
|
#3
|
|||
|
|||
|
si bien las circumstancias que comenta delphius harian el algoritmo mucho mas general, no creo que sean (excepto el solapamiento, que se tendria q resolver con distintos colores por figura) necesarias para nuestro amigo cesar junior. en el caso q si, le recomiendo una busqueda de 'redes neuronales reconocimiento de objetos' por google. Hay algunos ejemplos realmente interesantes, que parecen sacados de ciencia ficcion, si esto hoy en dia existe. saludos, voy a cenar
hasta luego |
|
#4
|
||||
|
||||
|
Pero, ¿no estás presuponiendo demasiado Delphius? En el algoritmo original planteado por César, no veo que se intente determinar distintas formas, sólo el número de colonias blancas. Digamos que en esta imagen
![]() hay dos estrellas y dos cruces, pero, si nos limitamos a contar manchas blancas, pues yo veo tres. // Saludos |
|
#5
|
||||
|
||||
|
Cita:
Yo por las dudas, yo prefiero agarrar el cañón. No vaya a ser cosa... ![]() ![]() Y bueno, si se trata de contar manchas si, tal vez baste y sobre con algo similar a lo que pasó coso. Saludos, |
|
#6
|
|||
|
|||
|
La idéa basica es essa, en lo q dice a respecto de la imagen, ella reciben un pré tratamiento, de filtro como la Binarización, o sea que se separa el fondo del objeto, asi como el ejemplo arriba, el algoritmo se llama Region Filling, e intentado el algoritmo de coso peo no me há dado resultado, lo estoi estudiando para ver si lo hago algunas modificaciones
|
|
#7
|
|||
|
|||
|
Un ejemplo de imagen, iaginen estos nodulos como la paret blanca y ele fondo como la como negro, al final deve retornar um total de 9 nodulos
http://www.nitragin.com.ar/brasil/im...oc/g_inoc7.jpg |
|
#8
|
||||
|
||||
|
Pues yo también me voy a meter
Si lo que queremos es contar manchas, porque no difuminamos bien la imagen, y luego le aplicamos un "umbral". Seguramente las formas que queden sean lo bastante simples y definidas para que no tengamos problemas en encontrarlas.De todas formas seria interesante un algoritmo que además de localizar la mancha nos dijera su tamaño, no es lo mismo una mancha de 1 pixels que de 100x100, podría interesarnos descartar las que fueran demasiado pequeñas |
|
#9
|
||||
|
||||
|
Cita:
![]() ![]() ![]() Y bueno, habría que considerar hasta que punto le es aplicable y/o útil a Cesar. Saludos, |
|
#10
|
|||
|
|||
|
Esso estaria interessante, pues ya que todavia no e encontrado una imagen donde haya ese problema, pero eso no quiere decir q no vaya a ocurrir
![]() |
|
#11
|
|||
|
|||
|
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. |
|
#12
|
||||
|
||||
|
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, |
|
#13
|
|||
|
|||
|
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 |
|
#14
|
|||
|
|||
|
Cita:
Esto de definir un tamanho con un algoritmo se ve interessante que camino devo seguir? |
|
#15
|
|||
|
|||
|
Hola de nuevo Cesar Junior,
te ira contando los tamaños |
|
#16
|
|||
|
|||
|
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!!! |
![]() |
| 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 |
|