Reducción de resolución sin suavizado

¿Existe una forma integrada de reducir la resolución de una imagen en OpenCV 2.3.1 sin un suavizado gaussiano previo (que se realiza mediante la función pyrDown C ++)?

Gracias.

preguntado el 03 de mayo de 12 a las 14:05

3 Respuestas

Quizás estas buscando cambiar tamaño ().

# Python code:
import cv2
large_img = cv2.imread('our_large_image.jpg')
small_to_large_image_size_ratio = 0.2
small_img = cv2.resize(large_img, # original image
                       (0,0), # set fx and fy, not the final size
                       fx=small_to_large_image_size_ratio, 
                       fy=small_to_large_image_size_ratio, 
                       interpolation=cv2.INTER_NEAREST)

En lugar de interpolation=cv2.INTER_NEAREST puedes usar cualquiera de estos métodos de interpolación.

Respondido el 20 de junio de 20 a las 10:06

cambiar el tamaño () con interpolación = INTER_NEAREST.

EDITAR

hmmm, ¿qué pasa si escribes la función tú mismo?

double factor;
int newcols = round(mat.cols*factor);
int newrows = round(mat.rows*factor);

Mat newmat = Mat(newcol, newrows, mat.type());

for (int i=0;i<mat.cols;i++){
    for (int j=0;j<mat.cols;j++){
        newmat_<yourtype> (round(i*factor), round(j*factor)) = mat_<yourtype>(i, j);
    }
}

No he comprobado si el código funciona o no (lo más probable es que no), pero te haces una idea.

contestado el 09 de mayo de 12 a las 15:05

Más específicamente, me gustaría desechar todas las filas y columnas pares. Desafortunadamente, su sugerencia arroja muchos BUUU: template<class T> Mat_<T> DownsampleFromGrid8ToGrid16(Mat_<T>& x) { Mat_<T> res(Size(x.cols/2, x.rows/2)); for(int i = 0; i < x.rows; i++) for(int j = 0; j < x.cols; j++) if(i%2 == 1 && j%2 == 1) res(i/2,j/2) = x(i,j); Mat_<T> tmp; resize(x, tmp, Size(res.cols, res.rows), 0, 0, INTER_NEAREST); for(int i = 0; i < res.rows; i++) for(int j = 0; j < res.cols; j++) { T tt=res(i,j); T ttt=tmp(i,j); if(tt != ttt) puts("BUUU"); } return res; } - Vadim Kantorov

Puede usar Image Pyramids: pyrDown, los enlaces del documento opencv son http://docs.opencv.org/2.4/doc/tutorials/imgproc/pyramids/pyramids.html

contestado el 21 de mayo de 16 a las 05:05

Si bien esto puede responder teóricamente a la pregunta, sería preferible para incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. - Raju

La pregunta solicita específicamente sin suavizar y menciona pyrDown como contraejemplo. A menos que incluya una explicación de cómo se puede usar pyrDown para reducir la muestra sin suavizar, esto no responde la pregunta. - Cecilia

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.