2017-10-02 1 views
1

J'ai matrice de nombres ... disons que c'est venu d'une photo avec 16 x 16 pixelsnuméros de lecture Matrice et caractéristiques R dans l'extraction

Mat <- matrix(rbinom(16 * 16, 1, 0.5), ncol = 16, nrow = 16) 

Je voudrais stride 1 pixel à chaque fois temps à regarder un noyau de 3x3 pixels autour du pixel courant et extraire les caractéristiques de celui-ci. Par exemple, je peux regarder un pixel donné et extraire combien de 1 ou de 0 sont présents dans la zone 3x3 qui l'entoure. Je pourrais stocker ces informations puis se déplacer le long du pixel suivant etc etc

Je ne suis pas sûr comment:

enjambent de gauche à droite, ligne par ligne vérifier la région 3x3 à chaque fois.

et

En tenant compte des pixels au bord même car ils pas une région 3x3, dans CNNs Je crois que c'est manipulable par zéro padding, mais je ne veux pas compter les 0, ils devraient probablement être NAs etc.

See image below

Ceci est évidemment fait dans une boucle de quelque sorte - je ne suis pas sûr comment coder cela dans R.

Répondre

0
# Stride 1 pixel at at time each time looking at a 3x3 pixel kernel around the current pixel 

for(c in 1:ncol(Mat)){ 
    for(r in 1:nrow(Mat)){ 
    if(r+2 < nrow(Mat) & c+2 < ncol(Mat)){ 
     print("Here's the current 3x3:") 
     print(Mat[r:(r+2),c:(c+2)]) 
     print("You can do your feature engineering step here.") 
    } 
    else if(r+2 < nrow(Mat) & !(c+2 < ncol(Mat))){ 
     print("You could pad as you described but based on the rest of your 
      description the result would be the same as just ommitting the padded 
      cells.") 
     cc <- ncol(Mat) 
     print("Here's the current pseudo-3x3:") 
     print(Mat[r:(r+2),c:cc]) 

    } 
    else if(!(r+2 < nrow(Mat)) & (c+2 < ncol(Mat))){ 
     rr <- nrow(Mat) 
     print("Here's the current pseudo-3x3:") 
     print(Mat[r:rr,c:(c+2)]) 
    } 
    else if(!(r+2 < nrow(Mat)) & !(c+2 < ncol(Mat))){ 
     c <- ncol(Mat) 
     r <- nrow(Mat) 
     print("Here's the current pseudo-3x3:") 
     print(Mat[r:rr,c:cc]) 
    } 

    } 
} 
+1

brillant - et très une réponse rapide...! – PaulBeales

+0

@PaulBeales heureux d'aider :) –