Opérations de voisinage d'image et de bloc dans Matlab (8)

Image Neighborhood Block Operations Matlab



L'opération de voisinage d'image signifie que la valeur de pixel de l'image de sortie est déterminée par un certain pixel de l'image d'entrée
et les pixels dans son voisinage, généralement le voisinage d'un pixel est un bloc de pixels qui est beaucoup plus petit que la taille de l'image elle-même et a une forme régulière, telle qu'un carré 2 × 2, un rectangle 2 × 3 ou des polygones ronds similaires . Les opérations de quartier peuvent être divisées en opérations de quartier glissant et opérations de quartier élevé selon le type de quartier

Dans MAILAB, plusieurs numéros qui implémentent des opérations de voisinage sont fournis et les utilisateurs peuvent appeler directement ces fonctions pour implémenter diverses opérations.



  • Fonction générale d'opération de voisinage glissant nlfilter ()
  • Fonction d'opération de voisinage de direction de colonne colfilt ()
  • Fonction d'opération de voisinage séparée blockproc ()

Fonction de traitement d'image nlfilter



usage:



B = nlfilter(A,[m n],fun) B = nlfilter(A,[m n],fun,P1,P2,...) B = nlfilter(A,'indexed',...) B = nlfilter(A,[m n],fun) %For each m of image A*n Slider application function fun. %fun function must accept m*n blocks as input, and return a scalar y, like: c=fun(x) c is m*The input value of the center pixel of n block x.

Exemple:

B = nlfilter(A,[3 3],@myfun)

Où myfun est un fichier m comme suit:

function scalar = myfun(x) scalar = median(x(:))

Puis introduisez la fonction d'opération de voisinage de séparation
Prenons le code comme exemple:



I = imread('lena_color_512.tif') fun = @(block_struct) imrotate(block_struct.data, 30) %Get function handle for split block operation I1 = blockproc(I, [64, 64], fun) %Perform split block operations fun = @(block_struct) std2(block_struct.data) %Get function handle for split block operation I2 = blockproc(I, [32,32],fun) fun = @(block_struct) block_struct.data(:, :, [3 1 2]) %Get function handle for split block operation blockproc(I, [100 100], fun, 'Destination', 'brg_lena.tif') set(0, 'defaultFigurePosition', [100, 100, 1000, 500]) %Modify the default settings of the image position set(0, 'defaultFigureColor', [1 1 1]) %Modify the settings of the graphic background color figure subplot(131), imshow(I1) subplot(132), imshow(I2, []) subplot(133), imshow('brg_lena.tif')

Le premier de la figure ci-dessous est le résultat de la rotation de chaque pixel de 30 °, divisé en 64 × 64 pixels
La deuxième dans la figure ci-dessous consiste à diviser le graphique en 32 × 32 pixels, puis à définir la valeur de chaque bloc
Le troisième dans la figure ci-dessous est de faire fonctionner la couche verte

image


Dans le processus de traitement d'image, l'utilisateur sélectionne généralement la région d'intérêt pour les opérations associées, et MATLAB fournit également certaines fonctions pour la sélection et le fonctionnement de la région d'image.

  • Fonction de sélection de zone de polygone roipoly ()
  • Fonction de sélection de zone ROI grise roicolor ()
  • Fonction de remplissage de zone rofifll ()
  • Fonction de filtre régional roifilt2 ()
I = imread('lena_color_512.tif') I = rgb2gray(I) BW1 = roicolor(I, 55, 100) %ROI region selection based on gray image c = [87 171 201 165 79 32 87] r = [133 133 205 259 259 209 133] %Define ROI vertex position BW = roipoly(I, c, r) %Select the ROI area according to r and c I1 = roifill(I, BW) %Fill the area according to the image generated by the BW mask h = fspecial('motion', 20, 45) %Create a motion filter and explain the parameters I2 = roifilt2(h, I, BW) %Regional filtering set(0, 'defaultFigurePosition', [100, 100, 1000, 500]) %Modify the default settings of the image position set(0, 'defaultFigureColor', [1 1 1]) %Modify the settings of the graphic background color figure(1) subplot(121), imshow(BW1) %Display processing results subplot(122), imshow(BW) %Show ROI area figure(2) subplot(121), imshow(I1) %Show fill effect subplot(122), imshow(I2) %Display area filtering effect

Le résultat est:
L'image de gauche est l'image en niveaux de gris définie en fonction de notre zone délimitée, et l'image de droite est la zone de retour sur investissement après avoir déterminé le sommet.
image
L'image de gauche est l'effet du remplissage de la zone ROI, et l'image de droite est le résultat du filtrage de la zone ROI
image

  • roicolor
    Parmi eux, roicolor peut sélectionner la zone en fonction de la couleur, et l'utilisation est: (notez qu'il ne peut gérer que des images bidimensionnelles, donc l'image couleur doit être convertie en niveaux de gris)
BW = roicolor(A,low,high) BW = roicolor(A,v)

BW = roicolor (A, bas, haut) La plage de la palette de couleurs est [bas haut] et renvoie la zone de sélection de ces pixels. BW est un tableau de même taille que A. Si la valeur de l'élément dans A est dans la plage [low high], la valeur de retour est 1, sinon elle renvoie 0.

  • spécial
h = fspecial(type) h = fspecial(type,parameters,sigma)
taper rôle de type
type = «moyen» Il s'agit du filtrage des moyennes, le paramètre est n, qui représente la taille du modèle, exprimée par un vecteur, et la valeur par défaut est [3,3]. La valeur par défaut est une matrice 3 * 3
type = «gaussien» Il s'agit d'un filtre passe-bas gaussien à deux paramètres. n représente la taille du modèle, la valeur par défaut est [3,3] et sigma représente l'écart type du filtre en pixels et la valeur par défaut est 0,5.
type = «laplacien» C'est un opérateur laplacien, le paramètre est alpha, qui est utilisé pour contrôler la forme de l'opérateur laplacien, la plage de valeurs est [0,1] et la valeur par défaut est 0,2.
type = «log» C'est un opérateur gaussien laplacien, avec deux paramètres, n représente la taille du modèle, la valeur par défaut est [3,3], sigma est l'écart type du filtre, l'unité est le pixel et la valeur par défaut est 0,5
type = «prewitt» C'est un opérateur prewitt, utilisé pour l'amélioration des bords, sans paramètres.
type = «sobel» C'est le célèbre opérateur sobel, utilisé pour l'extraction des bords, sans paramètres.
type = 'flou' Il s'agit d'un filtre d'amélioration du contraste, le paramètre alpha est utilisé pour contrôler la forme du filtre, la plage est [0,1] et la valeur par défaut est 0,2.

J'ai réappris une nouvelle méthode de traitement d'image, et je suis plein de réalisations. Continue!