Uno dei miei amici stava lavorando al seguente progetto:Ricerca di pozzi in un'immagine
Di seguito è l'immagine microscopica (SEM) della superficie di acciaio inossidabile.
Ma si può vedere, è corroso un po '(dopo una lunga esposizione al ambiente marino) e alcuni pozzi si formano sulla superficie. Alcuni dei box sono segnati in cerchio rosso.
Ha bisogno di trovare il numero di box nell'immagine e lo stava contando manualmente (immagina, ci sono quasi 150 immagini). Quindi ho pensato di automatizzare questo processo con qualsiasi strumento di elaborazione delle immagini.
Domanda:
Come posso trovare il numero di pozzi in questa immagine?
Quello che ho cercato:
Come primo passo, ho migliorato il contrasto un po 'dalla manovra di chiusura.
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('6.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(11,11))
close = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, kernel)
close2 = cv2.add(close,1)
div = (np.float32(gray)+1)/(close2)
div2 = cv2.normalize(div,None, 0,255, cv2.NORM_MINMAX)
div3 = np.uint8(div2)
Risultato:
Poi ho applicato una soglia per 127 e trovare contorni in esso. Successivamente questi contorni vengono filtrati in base alla loro area (non ci sono informazioni specifiche sull'area, ho preso un intervallo di 1-10 come valore empirico).
ret, thresh = cv2.threshold(div3, 127,255, cv2.THRESH_BINARY_INV)
temp, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
res = np.zeros(gray.shape,np.uint8)
for cnt in contours:
if 1.0 < cv2.contourArea(cnt) < 10.0:
res = cv2.drawContours(res, [cnt], 0, 255, -1)
plt.subplot(121); plt.imshow(img, 'gray'); plt.subplot(122); plt.imshow(res,'gray'); plt.show()
Ma è finito in un sacco di rumore extra. Vedere il risultato qui sotto:
Informazioni aggiuntive:
Alcune immagini di prova:
Un altro modo per eseguire la fase di pre-elaborazione sarebbe questo: http://scikit-image.org/docs/dev/auto_examples/plot_holes_and_peaks.html –