Sto provando a sottrarre lo sfondo dalle immagini di profondità acquisite con kinect. Quando ho appreso che cosa è la soglia di controllo, ho pensato che potesse farlo. Si spera di applicare la soglia di otsu per binarizzare l'immagine, convertendo l'immagine di profondità in scala di grigi.Soglia Otsu per immagine di profondità
Tuttavia ho implementato (provato a implementare) questo con OpenCV 2.3, è venuto invano. L'immagine di output è tuttavia binarizzata, in modo molto inaspettato. Ho fatto la soglia continuamente (cioè, stampo il risultato sullo schermo per analizzare per ogni fotogramma) e ho visto che per alcuni fotogrammi si trova la soglia 160ish e talvolta si scopre che è 0. Non riuscivo a capire perché stia succedendo. Può essere dovuto al numero elevato di 0 nell'immagine di profondità restituita da kinect, che corrisponde a pixel che non possono essere misurati. C'è un modo in cui potrei dire all'algoritmo di ignorare i pixel che hanno il valore 0? O la soglia di otsu non va bene per quello che sto cercando di fare?
Ecco alcune uscite e segmenti del codice correlato. Si può notare che il secondo screenshot sembra fare una buona binarizzazione, tuttavia voglio ottenere uno che distingua distintamente tra i pixel corrispondenti alla sedia nella scena e il backgroung.
Grazie.
cv::Mat1s depthcv(depth->getHeight(), depth->getWidth());
cv::Mat1b depthcv8(depth->getHeight(), depth->getWidth());
cv::Mat1b depthcv8_th(depth->getHeight(), depth->getWidth());
depthcv.data =(uchar*) depth->getDepthMetaData().Data();
depthcv.convertTo(depthcv8,CV_8U,255/5000.f);
//apply otsu thresholding
cv::threshold(depthcv8, depthcv8_th, 128, 255, CV_THRESH_BINARY|CV_THRESH_OTSU);
std::ofstream output;
output.open("output.txt");
//output << "M = "<< endl << " " << depthcv8 << endl << endl;
cv::imshow("lab",depthcv8_th);
cv::waitKey(1);
Per fare uno screenshot di singola finestra in Ubuntu stampa 'alt + prtsc'. – ArtemStorozhuk
Ho solo familiarità con Windows SDK ufficiale, quindi non posso rispondere direttamente alla domanda. Tuttavia, se si dispone di un'installazione di Windows, vi sono esempi di "schermate verdi" negli esempi ufficiali di Kinect per Windows SDK Toolkit. Potresti essere in grado di ottenere alcune idee da lì. Può essere... ? –
per favore inserisci immagine di input – nkint