soy nueva en este sitio y esta es mi primera consulta…
necesito simple algoritmo de ventana Deslizante de la implementación en c++ o matlab
por favor me ayudan en este sentido
gracias

  • Puede dar un ejemplo de lo que estamos tratando de hacer?
  • Una ventana deslizante es sólo una técnica general con muchas aplicaciones diferentes – no es un algoritmo específico como tal. Tendrás que ser más detallada acerca de sus necesidades si usted desea ayudar con esto.
  • Querido Pablo R, tienes razón yo no se menciona claramente para qué quiero este código en realidad quiero el código de ventana deslizante para la secuencia de datos minería de datos. yo que usted me puede ayudar en este sentido su ayuda muy completa Jonas gracias para ti también, como he mencionado aquí tengo que presentar mi proyecto titulado «ventana deslizante basado en flujo de datos minería de datos»
  • Yo no estoy familiarizado con la secuencia de datos minería de datos. Puede usted explicar esto con un ejemplo sencillo, por favor? Idealmente, deberías editar tu pregunta por que.
InformationsquelleAutor Zia | 2010-05-30

3 Comentarios

  1. 8

    Suponiendo que usted necesita un genérico de ventana deslizante para el procesamiento de imágenes en Matlab se podría:

    image = imread('image.png');
    imageWidth = size(image, 2);
    imageHeight = size(image, 1);
    
    windowWidth = 32;
    windowHeight = 32;
    
    for j = 1:imageHeight - windowHeight + 1
        for i = 1:imageWidth - windowWidth + 1
            window = image(j:j + windowHeight - 1, i:i + windowWidth - 1, :);
            % do stuff with subimage
        end
    end
    • Sólo tenga en cuenta que los bucles en Matlab son lentos. Es mejor usar algunos de los «lotes» de las operaciones como en Jonas respuesta.
  2. 4

    Si la función es una simple combinación lineal de los valores de los píxeles en el barrio, como un promedio, puede utilizar CONV2 para hacer la convolución. También hay funciones especializadas, como MEDFILT2 si usted quiere tomar la mediana de cada ventana deslizante.

    Si la función que desea aplicar a cada barrio es más complejo, tiene dos opciones:

    1. Si tienes suficiente memoria, usted puede transformar su imagen en una matriz de gran tamaño, de tal forma que cada columna corresponde a una ventana deslizante usando IM2COL. Luego de aplicar la función a cada columna y remodelar.

    2. Si usted no tiene esa cantidad de memoria, uso NLFILTER para aplicar la función a cada ventana deslizante.

    En cualquier caso, puede que desee echar un vistazo a PADARRAY para engrosar su imagen antes de ejecutar la convolución para evitar la reducción de su imagen, mientras que la reducción de los efectos de la frontera.

    • Buena observación re: efectos de borde.
    • gracias, pero mi solicitud es acerca de la secuencia de datos minería de datos
  3. 2

    ¿Algo como esto para C++, por cierto el código a continuación fue escrito por OpenCV

    vector<Rect> get_sliding_windows(Mat& image,int winWidth,int winHeight)
    {
      vector<Rect> rects;
      int step = 16;
      for(int i=0;i<image.rows;i+=step)
      {
          if((i+winHeight)>image.rows){break;}
          for(int j=0;j< image.cols;j+=step)    
          {
              if((j+winWidth)>image.cols){break;}
              Rect rect(j,i,winWidth,winHeight);
              rects.push_back(rect);
          }
      } 
      return rects;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here