Usando el OpenCV más nuevo, ¿existe una manera fácil de calcular la imagen de gradiente de un cv :: Mat específico?¿Hay una manera rápida y fácil en OpenCV para calcular el gradiente de una imagen?
5
A
Respuesta
14
Suponiendo que se refiere a la típica image gradient; puede calcular esto con bastante facilidad con el operador Sobel mencionado por Chris. Eche un vistazo al tutorial de Derivados de Sobel here. También podría estar interesado en el operador Laplace, y es tutorial.
Aquí es un breve fragmento de calcular los gradientes X e Y usando Sobel:
cv::Mat src = ...; // Fill the input somehow.
cv::Mat Dx;
cv::Sobel(src, Dx, CV_64F, 1, 0, 3);
cv::Mat Dy;
cv::Sobel(src, Dy, CV_64F, 0, 1, 3);
0
Como MEVATRON dijo: Sobel y los operadores de Laplace son poderosos, pero no se olvide de que el operador Scharr, que tiene una mayor precisión en un núcleo de 3 × 3 que Sobel tiene.
4
Desde: http://en.wikipedia.org/wiki/Image_gradient, que puede hacer:
IplImage * diffsizekernel(IplImage *img, int f, int c) {
float dkernel[] = {-1, 0, 1};
CvMat kernel = cvMat(f, c, CV_32FC1, dkernel);
IplImage *imgDiff = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_16S, 1);
cvFilter2D(img, imgDiff, &kernel, cvPoint(-1,-1));
return imgDiff;
}
IplImage * diffx(IplImage *img) {
return diffsizekernel(img, 3, 1);
}
IplImage * diffy(IplImage *img) {
return diffsizekernel(img, 1, 3);
}
Cuestiones relacionadas
- 1. Implementación rápida de gradiente y descenso en una biblioteca C++?
- 2. Manera rápida y fácil de eliminar el código "muerto" (comentado)
- 3. ¿La manera más fácil de girar 90 grados una imagen usando OpenCV?
- 4. Calcular el campo de vector de degradado de una imagen
- 5. ¿Hay alguna manera fácil de adjuntar una fuente en Eclipse?
- 6. Cargando una imagen usando OpenCV en Android
- 7. OpenCV dibujar una imagen sobre otra imagen
- 8. OpenCV Python e histograma de gradiente orientado
- 9. ¿Cómo 'suavizar' los datos y calcular el gradiente de línea?
- 10. ¿Una manera fácil de ejecutar pruebas en una gema?
- 11. ¿Hay una manera fácil de hacer clic y arrastrar el desplazamiento en marcos de texto?
- 12. ¿Cuál es una manera fácil y rápida de volver a cargar una aplicación web en tomcat en entorno de desarrollo?
- 13. Refactorización fácil y rápida en visual studio
- 14. ¿Hay alguna manera fácil de obtener programáticamente el alfabeto?
- 15. ¿Hay una manera más simple que esto de calcular una escalera en el póker?
- 16. ¿Cómo puedo detectar/calcular si hay una imagen pequeña dentro de una imagen más grande?
- 17. OpenCV vía python: ¿Hay una forma rápida de cero píxeles fuera de un conjunto de rectángulos?
- 18. ¿Cuál es una manera fácil de mostrar una imagen en Java/Scala?
- 19. Cómo afilar una imagen en OpenCV?
- 20. Java: ¿Existe una manera fácil y rápida de armar conjuntos AND, OR o XOR?
- 21. ¿Hay una manera más fácil de ejecutar una aplicación de Android usando el emulador de eclipse?
- 22. En Scala, ¿hay alguna manera fácil de convertir una clase de caso en una tupla?
- 23. Gradiente de Opacidad de Firefox (Transparencia) - Desvanecimiento de una imagen
- 24. ¿Hay una manera rápida de encontrar el extremo faltante en Ruby?
- 25. Manera rápida/fácil de ejecutar un método basado en una condición
- 26. Calcular el color promedio de un área en una imagen
- 27. leer números y letras de una imagen usando openCV
- 28. eliminando el ruido en una imagen binaria usando openCV
- 29. ¿Hay una manera fácil de copiar un iterador en una lista en Java?
- 30. ¿Realmente no hay una manera fácil de probar scripts de títeres en una máquina remota?
Una imagen de muestra, y los resultados esperados estaría bien. – Sonaten
¿Está buscando el operador de Sobel, que calcula los derivados? [Documentación aquí] (http://opencv.itseez.com/modules/imgproc/doc/filtering.html#sobel). – Chris