Immagine binaria

immagine digitale in cui ogni pixel ha due possibili valori

Un'immagine binaria (o bitonale, o bilivello) è una immagine digitale che ha due possibili valori per ogni pixel[1]. Tipicamente i due colori usati in una immagine binaria sono bianco e nero sebbene possa essere usato qualsiasi colore. il colore usato per gli oggetti nell'immagine è per i soggetti in primo piano il bianco mentre per lo sfondo il nero. Nel settore della scansione dei documenti ci si riferisce come immagine bitonale. Ogni pixel, poi, è memorizzato in un solo bit.

Immagine binaria creata in python

Le immagini binarie sono spesso usate nell'elaborazione delle immagini come maschere o come risultato di alcune operazioni quali la segmentazione, la soglia e oscillazione (dithering). alcuni dispositivi come stampanti laser, macchine fax lavorano solo con immagini binarie.

Una immagine binaria può essere memorizzata con formato bitmap. Una immagine di 640x480 pixel richiede 37,5 KB di memoria (640x480/8=38400).

Implementazione modifica

Creazione di una immagine binaria con il modulo opencv2 con i linguaggi di programmazione C, C++ e Python e con il modulo mahotas e scikit image di python:

C e C++ modifica

IplImage* im_gray = cvLoadImage("image.jpg",CV_LOAD_IMAGE_GRAYSCALE);

// C++ (OpenCV 2.0)
Mat im_gray = imread("image.jpg",CV_LOAD_IMAGE_GRAYSCALE);

// C
IplImage *im_rgb  = cvLoadImage("image.jpg");
IplImage *im_gray = cvCreateImage(cvGetSize(im_rgb),IPL_DEPTH_8U,1);
cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY);

// C++
Mat im_rgb  = imread("image.jpg");
Mat im_gray;
cvtColor(im_rgb,im_gray,CV_RGB2GRAY);

// C
IplImage* im_bw = cvCreateImage(cvGetSize(im_gray),IPL_DEPTH_8U,1);
cvThreshold(im_gray, im_bw, 128, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);

// C++
Mat img_bw = im_gray > 128;

Python modifica

path "documents/image.jpg"

#opencv2
import cv2
gray = cv2.imread(path,0)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)

#mahotas
import mahotas as mh
fork = mh.imread(path)  
imgbnbin = fork[:,:,0]
bfork = imgbnbin < 150

#scikit image
import skimage
image = skimage.imread(path)
global_thresh = skimage.threshold_otsu(image)
binary_global = image > global_thresh

Note modifica

  1. ^ Conversion of a Color Image to a Binary Image, CoderSource.net, 18 aprile 2005. URL consultato l'11 giugno 2008 (archiviato dall'url originale il 10 giugno 2008).

Voci correlate modifica

Altri progetti modifica

Collegamenti esterni modifica