Immagine binaria
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.
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 | modifica wikitesto]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 | modifica wikitesto]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 | modifica wikitesto]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 | modifica wikitesto]- ^ 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 | modifica wikitesto]- Bianco e nero
- Metodo Otsu
- Connected-component labeling
- X BitMap
- Trasformazione hit-or-miss
- Morfologia matematica
Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su immagine binaria
Collegamenti esterni
[modifica | modifica wikitesto]- Una immagine binaria (GIF), su homepages.inf.ed.ac.uk.
- (EN) sogliatura binaria (binary thresholding) in opencv, su docs.opencv.org.