Colección de citas famosas - Libros antiguos - Cómo reducir el impacto de la iluminación diferente entre los fotogramas delantero y trasero durante el procesamiento de imágenes

Cómo reducir el impacto de la iluminación diferente entre los fotogramas delantero y trasero durante el procesamiento de imágenes

Pasos

1. Realizar un filtrado de valor máximo (mínimo) para obtener inicialmente el mapa de iluminación.

2 Realizar un filtrado medio (o gaussiano) para obtener el final. mapa de distribución de iluminación

3. Resta la imagen de iluminación de la imagen original para obtener el objetivo de primer plano

Un castaño

Toma la imagen rice.png que viene con matlab como ejemplo. Esperamos poder distinguir el arroz del fondo. El enfoque intuitivo es utilizar la segmentación de umbral para crear una imagen binaria y luego marcar las áreas conectadas, de modo que podamos conocer el tamaño y la posición central de cada arroz.

Sin embargo, si observa de cerca la imagen del arroz, encontrará que la iluminación durante la fotografía es desigual, lo que dificulta el uso de un umbral global para la segmentación. La segmentación directa hará que parte del fondo se vea afectada. ser reconocido como un objetivo (el umbral es demasiado pequeño) o Algunos objetivos se pierden (el umbral es demasiado grande). ¿Cuál sería el resultado si se eliminara la iluminación desigual y luego se binarizara?

Código

función newIm= DUCO_RemoveBackGround(im,w,isShow)

%im: imagen original; w filtro tamaño de ventana isShow si se muestra el intermedio; procesar

%

%

if isShow==1

figura

imshow(im,[] )

end

bk=double(im);

%1 filtro de valor mínimo

bk=ordfilt2(bk,1. , ones(w,w),'metric');

if isShow==1

figura

subtrama(2,2,1)

imshow(bk,[]),title('Resultado después del filtrado del valor mínimo'); %Mostrar la imagen filtrada

end

%2. /p>

h=ones(w,w)/(w*w);

bk=imfilter(bk,h,'replicate');

if isShow ==1

subplot(2,2,2)

imshow(bk,[]),title('Resultado después del filtrado medio'); %Visualización después del filtrado de imagen

end

%3. El resultado de restar el brillo desigual

newIm=imsubtract(double(im),bk);

if isShow ==1

subplot(2,2,3)

imshow(newIm,[]);title('Eliminar imagen de fondo');

end

%4. Binarizar y segmentar el objetivo

th=graythresh(newIm/255);

newIm=im2bw(newIm /255,th);

if isShow==1

subplot(2,2,4)

imshow(newIm),title('valor binario El resultado%Display'); la imagen filtrada

end

end