ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Conteo de granos Procesamiento de imagenes


Enviado por   •  19 de Junio de 2018  •  Tareas  •  1.779 Palabras (8 Páginas)  •  755 Visitas

Página 1 de 8

Conteo de granos por procesamiento de imágenes.

Tarea 2 Procesamiento de señales

[pic 1]

Introducción

El presente trabajo tiene la finalidad de realizar el conteo de granos de una imagen tomada por un microscopio metaligráfico, mediante procesamiento de imágenes. Se han implementado los métodos necesarios para procesar las imágenes, con la finalidad de estructurar un sistema que automáticamente realice el conteo y la separación de granos.

Implementación:

Los métodos fueron programados en el lenguaje C++, con la finalidad de tener un sistema completo y portable se generó una clase para procesamiento de imágenes, el formato único de imágenes soportado es BMP, dado que los mapas de bits no requieren descompresión adicional para la extracción de la información de los pixeles de la imagen.

La clase tiene los siguientes métodos:

void OpenVMS(Insisting Filename);

Abre imagen BMP

void SaveBMP(AnsiString FileName);

Guarda imagen BMP

void GrayScale();

Convierte a escala de grises la imagen

 void Threshold(int LimInf,int LimSup);

Umbraliza la imagen entre los limites inferior y superior

void Invert();

Invierte la imagen

int ParticleCount();

Cuenta las partículas de la imagen

void ParticlePerim();

Mide el perímetro de las partículas de una imagen el resultado lo guarda en un arreglo P[n]

void CopyImgPrev(Graphics::TBitmap *IMP,Graphics::TBitmap *IMN);

Copia la imagen antes de realizar un procesamiento en una matriz

void EraseMarc();

Dibuja el marco exterior de una imagen en color negro

void EraseFrontH();

Elimina las partículas que tocan los bordes horizontales de la imagen

void EraseFrontV();

Elimina las partículas que tocan los bordes verticales de la imagen

void AddMarc(TColor Color);

Agrega un marco exterior en la imagen de un color determinado

void RemoveMarc();

Elimina un marco exterior de la imagen reduciendo su tamaño

void EraseHoles();

Elimina los hoyos dentro de las partículas de una imagen

void ErasePoits(int AreaMenor);

Elimina los puntos blancos menores a un área especifica

void ErasePoitsN(int AreaMenor);

Elimina los puntos negros menores a un área especifica

void Distance();

Calcula la función distancia de la imagen

void BasicErosion();

Realiza la erosión básica de una imagen

void BasicDilatation();

Realiza la dilatación básica de una imagen

void Opening(int N);

Realiza la apertura tamaño N

void Closing(int N);

Realiza la cerradura tamaño N

void Reconstruction(Graphics::TBitmap *Mark);

Genera la reconstrucción de una imagen

void LocalMin();

Obtiene los mínimos locales de la imagen

void LocalMax();

Obtiene los máximos locales de la imagen

ImgBMP& operator + (const ImgBMP &sumando);

Sobrecarga de operador suma, para dos imágenes

ImgBMP& operator + (const int suma);

Sobrecarga de operador suma, para una imagen y una constante

ImgBMP& operator - (const ImgBMP &resta);

Sobrecarga de operador resta, para dos imágenes

ImgBMP& operator - (const int resta);

Sobrecarga de operador resta, para una imagen y una constante

ImgBMP& operator * (int A);

Sobrecarga de operador multiplicación, para una imagen y una constante

ImgBMP& operator = (const ImgBMP &Img);

Sobrecarga de operador igual

int MinNeigborP(int x, int y, Graphics::TBitmap *Im);

Obtiene el mínimo valor de los vecinos en orden video

int MinNeigborN(int x, int y, Graphics::TBitmap *Im);

Obtiene el mínimo valor de los vecinos en orden video inverso

int MaxNeigborP(int x, int y, Graphics::TBitmap *Im);

Obtiene el máximo valor de los vecinos en orden video

int MaxNeigborN(int x, int y, Graphics::TBitmap *Im);

Obtiene el máximo valor de los vecinos en orden video inverso

   

Conteo

Para realizar el conteo de partículas se debe tratar la imagen y obtener parámetros que puedan ser contados con el método de conteo de partículas. Para realizar este tratamiento se realizaron diferentes pruebas paso a paso para lograr un mejor resultado.

El primer paso es convertir a escala de grises la imagen mediante un promedio ponderado entre los tres canales Rojo Azul y Verde que es igual a la intensidad de la imagen en espacio color: Color = R*0.213 + G*0.715 + B*0.072, la figura 1 muestra el resultado.

[pic 2]        [pic 3]

Figura 1. Conversión a escala de grises.

Para hacer evidente los bordes no basta con hacer una moralización de la imagen, se realizaron varias pruebas para lograr mejorar la extracción de los bordes de los granos. El mejor resultado se logro haciendo el tophat de la imagen: una cerradura de tamaño 2 menos la imagen original, resultando en la imagen de la figura 2, la implementación en C++ se hizo mediante las siguientes funciones:

Im1.Closing(2);

Im1-Im2;

[pic 4]

Figura 2. Top-Hat con elemento estructural 5x5

...

Descargar como (para miembros actualizados)  txt (10.9 Kb)   pdf (1 Mb)   docx (1.3 Mb)  
Leer 7 páginas más »
Disponible sólo en Clubensayos.com