Après avoir appliqué une opération de fenêtre glissante comme stdfilt(i, ones(5, 5))
à une image dans MATLAB, je voudrais définir les pixels de bordure, les pixels calculés en utilisant le remplissage, à NaN
pour les marquer comme sans signification. Dans cet exemple, je définirais les deux lignes et les colonnes les plus externes à NaN
. Étant donné une fenêtre M * M, comment définir cette bordure de (M - 1)/2 pixels de large à une valeur spécifique?Comment puis-je définir la valeur des pixels de bordure après l'application d'une opération de fenêtre glissante?
Répondre
Première trouvaille où sont NaN
dans votre matrice. Supposons que votre nom d'image est A.
a = isnan(A);
Cela va créer imm a
avec 0 à des endroits qui sont des nombres, et 1 à des endroits qui sont NaN
. Ensuite, trouver l'emplacement de Nan
éléments tels que:
[x,y]=find(a==1);
les remplacer ensuite avec une valeur V
comme:
for i=1:length(x)
A(x(i),y(i)) = V;
end
On suppose, r
est la matrice (résultat de stdfilt
). Voici un exemple comment assigner NaN aux frontières. En général, vous devez spécifier l'index correct.
>> r = rand(4)
r =
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
>> r([1, end], :) = nan
r =
NaN NaN NaN NaN
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
NaN NaN NaN NaN
>> r(:, [1, end]) = nan
r =
NaN NaN NaN NaN
NaN 0.0975 0.9649 NaN
NaN 0.2785 0.1576 NaN
NaN NaN NaN NaN
mise à jour: en général, étant donné que l'image est une matrice, votre question est "comment définir certaines valeurs de la matrice?". La réponse est: "en utilisant les index de la matrice". Il existe plusieurs façons de le faire (par exemple, en créant une matrice d'index, un masque logique ou en utilisant des coordonnées de lignes/colonnes). La décision quant à la méthode à utiliser dépend généralement de la vitesse de l'opération pour cette tâche spécifique. Par exemple, si vous devez remplacer des zéros par des NaN, il est plus rapide d'utiliser un masque logique: r(r == 0) = nan
, et ainsi de suite.
Cela fera l'affaire, mais cela semble être le genre de fonction qui serait dans la boîte à outils de traitement d'image.
mask = logical(ones(size(i)));
width = (m - 1)/2;
mask(width + 1:size(i, 1) - width, width + 1:size(i, 2) - width) = 0;
i(mask) = NaN;
- 1. Matlab- mettre la bordure autour de la fenêtre glissante
- 2. Bordure de la fenêtre
- 3. Algorithme de recherche de fenêtre glissante
- 4. R calcul de la fenêtre glissante série zoo
- 5. extensions réactives fenêtre temporelle glissante
- 6. fenêtre glissante sur 2d tableau dans vb.net
- 7. Comment définir la bordure de l'UITextField?
- 8. Comment définir la bordure de Gridview
- 9. Bordure étrange après fermeture Fenêtre contextuelle
- 10. Cadre de fenêtre personnalisé - Bordure lisse?
- 11. Moyenne glissante ou moyenne glissante
- 12. Ajouter un bouton à la bordure de la fenêtre
- 13. Création d'une fenêtre glissante Go-back-N Client sur Java
- 14. Comment définir la couleur de certains pixels d'une image
- 15. paralléliser une régression de fenêtre glissante dans R
- 16. Comment supprimer une bordure de la fenêtre de dialogue personnalisée?
- 17. Taille de la bordure d'une fenêtre fixe
- 18. Comment supprimer la bordure de la zone client d'une fenêtre?
- 19. Comment obtenons-nous la taille de la bordure d'une fenêtre?
- 20. Comment changer la taille de la bordure d'une seule fenêtre?
- 21. Comment définir la fenêtre d'affichage des périphériques?
- 22. JavaScript: Définir le rayon de la bordure
- 23. Comment définir aucune bordure de table imbriquée?
- 24. Comment définir la marge de bordure sur un DataGrid WPF?
- 25. Comment définir la couleur de la bordure d'un CircleItemRenderer
- 26. Fenêtre sans bordure WPF sur la valeur maximale de la hauteur et de la largeur de la fenêtre
- 27. Vérification, opération réussie après toute opération LinqToSql
- 28. Chrome: suppression de la bordure/décoration de la fenêtre
- 29. Comment accéder à la valeur de profondeur des pixels voisins dans WebGL?
- 30. Utilisation de lapplication avec des arguments de modification
Je ne demande pas comment remplacer les NaN avec quelque chose, je demande comment remplacer les bords de l'image (pixels où stdfilt est calculée à partir des valeurs de pixels de faux) avec une valeur particulière. –