Le traitement d'image est une technologie qui peut être utilisée dans divers endroits. Même si c'est un divertissement de mariage. Quand j'ai la fin de la vingtaine, mon entourage est marié, donc j'en suis conscient (sueur)
[Ensemble de table de mariage / mariage]( https://www.pakutaso.com/20130406108post-2650.html" Ensemble de table de mariage / mariage ")
Et quand il s'agit de mariages, de divertissements
Je veux améliorer la qualité même quand je n'ai pas le temps ... Il répondra à ces besoins. C'est juste pour le traitement d'image.
La portée de cet article est la «cartographie entre les images» (correspondant au Chapitre 3 de Practical Computer Vision). Si vous êtes un processeur d'image avancé, veuillez signaler toute erreur.
Lorsque vous préparez une photo pour le divertissement, vous devez combiner les photos.
Si vous combinez simplement les photos, les photos auront un aspect étrange.
Le traitement requis ici est le suivant.
・ Déformation de l'image ・ Incorporez bien l'image dans l'image ·Alignement ・ Alignement pour le panorama
Les éléments requis pour le traitement de conversion d'image sont grossièrement répartis comme suit.
EECS 442 – Computer vision Conversation hour
・ Mise à l'échelle de l'image ・ Mise à l'échelle de l'image (asymétrique) ·rotation ・ Veuillez voir la figure à l'extrême droite car elle ne peut pas être expliquée avec des mots.
Nous convertirons l'image en combinant ces processus.
Voici quelques formules importantes.
\begin{pmatrix}
x' \\
y' \\
w'
\end{pmatrix}
=
\begin{pmatrix}
h_{11} & h_{21} & h_{31}\\
h_{12} & h_{22} & h_{32}\\
h_{13} & h_{23} & h_{33}
\end{pmatrix}
\begin{pmatrix}
x \\
y \\
w
\end{pmatrix}
\begin{matrix}
\boldsymbol{x'} = \boldsymbol{H}\cdot{\boldsymbol{x}}
\end{matrix}
L'équation ci-dessus montre que lorsqu'un point est donné en tant que vecteur, il est mappé à un autre espace en le multipliant par une matrice qui transforme le point. Cela n'a pas de sens dans les mots, alors je vais mettre un chiffre ci-dessous.
Lecture 16: Planar Homographies
Il montre à quoi il ressemble sur la caméra Sténopé lorsque l'on regarde un objet à partir de la caméra Sténopé, et il montre qu'il est converti en multipliant la matrice H lors de son expression comme une image plate de la caméra Sténopé.
Matrix H couvre le traitement de conversion d'image de base décrit au début. En trouvant la matrice exhaustive H, vous pouvez représenter à quoi elle ressemble sur la caméra Sténopé lorsque vous regardez un objet depuis la caméra Sténopé, ou vous pouvez représenter l'image sur un plan à partir de la caméra Sténopé. Cette matrice H est appelée matrice d'homographie.
Je vais le résumer ici.
Un traitement de conversion d'image est nécessaire pour créer une photo composite. Le traitement de conversion d'image peut être effectué en utilisant une matrice d'homographie. En utilisant la matrice d'homographie, il est possible de reproduire une image qui est déplacée en diagonale d'un plan ou une image qui est en diagonale par rapport à un plan.
Voici comment trouver la matrice d'homographie.
Utilise l'algorithme de transfert linéaire direct.
Vérifions à nouveau la formule ci-dessus.
\begin{pmatrix}
x' \\
y' \\
w'
\end{pmatrix}
=
\begin{pmatrix}
h_{11} & h_{21} & h_{31}\\
h_{12} & h_{22} & h_{32}\\
h_{13} & h_{23} & h_{33}
\end{pmatrix}
\begin{pmatrix}
x \\
y \\
w
\end{pmatrix}
Puisqu'il s'agit d'une image, elle représente des coordonnées bidimensionnelles, mais elle utilise des coordonnées appelées système de coordonnées simultanées, et il existe des valeurs w en plus des valeurs x et y.
La valeur de w est généralement normalisée à 1, mais le fait d'avoir cette valeur est qu'elle peut également représenter un mouvement parallèle.
Dans la conversion d'image, non seulement les quatre mouvements ci-dessus, mais également les mouvements parallèles qui changent de position peuvent être exprimés. C'est un point important.
Voir ci-dessous pour une illustration facile à comprendre.
http://d.hatena.ne.jp/Zellij/20120523/p1
Ensuite, vérifions le modèle normalisé. Ce que nous voulons trouver à partir de cette formule est une matrice d'homographie qui transforme une image plate en image diagonale et une image diagonale en image plate.
\begin{pmatrix}
x' \\
y' \\
1'
\end{pmatrix}
=
\begin{pmatrix}
h_{11} & h_{21} & h_{31}\\
h_{12} & h_{22} & h_{32}\\
h_{13} & h_{23} & h_{33}
\end{pmatrix}
\begin{pmatrix}
x \\
y \\
1
\end{pmatrix}
Lorsque la relation entre les points de l'image d'origine et l'image mappée est exprimée par une formule mathématique
x' = \frac{h_{11}x + h_{21}y + h_{31}}{h_{13}x + h_{23}y + h_{33}}\\
y' = \frac{h_{12}x + h_{22}y + h_{32}}{h_{13}x + h_{23}y + h_{33}}
Pour trouver la matrice H, vous devez trouver une valeur à 9 dimensions, mais ici nous ajoutons une contrainte. Contraignez la valeur de h33 à 1. Pourquoi est-il acceptable de mettre des restrictions ici?
x' = \frac{kh_{11}x + kh_{21}y + kh_{31}}{kh_{13}x + kh_{23}y + kh_{33}}\\
y' = \frac{kh_{12}x + kh_{22}y + kh_{32}}{kh_{13}x + kh_{23}y + kh_{33}}\\
\\
Lorsque h33 est réglé sur 1
x' = \frac{h_{11}x + h_{21}y + h_{31}}{h_{13}x + h_{23}y + 1}\\
y' = \frac{h_{12}x + h_{22}y + h_{32}}{h_{13}x + h_{23}y + 1}
Même si la valeur multipliée par k est calculée, elle n'a pratiquement aucun sens car elle est divisée par le dénominateur et la molécule, donc h33 est utilisé à la fois dans x et y. Ici, il est prudent de supposer que k est une valeur qui définit h33 à 1. Par conséquent, nous avons pu passer du problème de trouver la valeur à 9 dimensions au problème de recherche de la valeur à 8 dimensions en limitant la valeur de h33 à 1.
Solution directe de la méthode de transformation linéaire directe à partir d'ici
(h_{13}x + h_{23}y + 1)x' = h_{11}x + h_{21}y + h_{31}\\
({h_{13}x + h_{23}y + 1})y' = h_{12}x + h_{22}y + h_{32}
Demandé x ', y'
x' = h_{11}x + h_{21}y + h_{31} - h_{13}xx' - h_{23}yx' \\
y' = h_{12}x + h_{22}y + h_{32} - h_{13}xy' - h_{23}yy'
Il s'est avéré que deux formules peuvent être obtenues à partir des données en un point mappées. En d'autres termes, on a trouvé que si quatre points sont obtenus mathématiquement, les équations simultanées nécessaires pour obtenir huit valeurs peuvent être obtenues. Ici, j'exprimerai la formule lorsque 4 points seront obtenus.
\begin{pmatrix}
x'_{1} \\
y'_{1} \\
x'_{2} \\
y'_{2} \\
x'_{3} \\
y'_{3} \\
x'_{4} \\
y'_{4}
\end{pmatrix}
=
\begin{pmatrix}
x_{1} & y_{1} & 1 & 0 & 0 & 0 & -x_{1}x'_{1} & -y_{1}x'_{1}\\
0 & 0 & 0 & x_{1} & y_{1} & 1 & -x_{1}y'_{1} & -y_{1}y'_{1}\\
x_{2} & y_{2} & 1 & 0 & 0 & 0 & -x_{2}x'_{2} & -y_{2}x'_{2}\\
0 & 0 & 0 & x_{2} & y_{2} & 1 & -x_{2}y'_{2} & -y_{2}y'_{2}\\
x_{3} & y_{3} & 1 & 0 & 0 & 0 & -x_{3}x'_{3} & -y_{3}x'_{3}\\
0 & 0 & 0 & x_{3} & y_{3} & 1 & -x_{3}y'_{3} & -y_{3}y'_{3}\\
x_{4} & y_{4} & 1 & 0 & 0 & 0 & -x_{4}x'_{4} & -y_{4}x'_{4}\\
0 & 0 & 0 & x_{4} & y_{4} & 1 & -x_{4}y'_{4} & -y_{4}y'_{4}\\
\end{pmatrix}
\begin{pmatrix}
h_{11} \\
h_{12} \\
h_{13} \\
h_{21} \\
h_{22} \\
h_{23} \\
h_{31} \\
h_{32}
\end{pmatrix}
Il est également possible de trouver analytiquement les équations simultanées ci-dessus. Normalement, il est évident que la reproductibilité sera plus élevée si vous reproduisez en prenant 4 points ou plus.
C'est une solution lorsque le nombre de points augmente, mais c'est une solution par la méthode du carré minimum utilisant SVD. La dernière ligne de la matrice V de la solution obtenue par SVD est la solution par la méthode du carré minimum cette fois. (Pour le groupe de points, les valeurs observées à partir de l'espace normalisé par la moyenne 0 et la variance 1 sont utilisées.)
Si vous souhaitez savoir pourquoi c'est le cas, veuillez voir ci-dessous.
Décomposition en valeurs singulières
Pour résumer ici
・ La matrice d'homographie est une matrice qui déplace une image en diagonale d'un plan et d'une oblique à un plan. ・ La matrice peut être calculée en prenant 4 points ・ Utilisez SVD lors du calcul avec 4 points ou plus.
A partir de là, au lieu de limiter les problèmes qui peuvent être résolus en simplifiant la matrice d'homographie, nous allons introduire la transformation affine qui peut profiter des trois points requis.
\begin{pmatrix}
x' \\
y' \\
1
\end{pmatrix}
=
\begin{pmatrix}
a_{1} & a_{2} & t_{1}\\
a_{3} & a_{4} & t_{2}\\
0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
x \\
y \\
1
\end{pmatrix}
La formule ci-dessus signifie la mise à l'échelle 1. En d'autres termes, le montant de la conversion est supprimé.
Vous pouvez convertir un quadrilatère en quadrilatère parallèle, agrandir, réduire et vous déplacer en parallèle, mais vous ne pouvez pas convertir un quadrilatère en trapèze.
x' = \frac{h_{11}x + h_{21}y + h_{31}}{h_{13}x + h_{23}y + 1}\\
y' = \frac{h_{12}x + h_{22}y + h_{32}}{h_{13}x + h_{23}y + 1}
Si vous vérifiez la formule ci-dessus, vous pouvez convertir les valeurs de x'et y'in communes en fonction des valeurs de x et y. En d'autres termes, il était possible de changer la taille de la valeur entière en fonction de la position des coordonnées, mais comme elle a changé comme suit, il ne peut gérer que la conversion simple et le mouvement parallèle. Au lieu de cela, vous n'avez besoin que de 3 points. L'avantage de ceci est que la déformation affine divisée peut être utilisée.
x' = h_{11}x + h_{21}y + h_{31}\\
y' = h_{12}x + h_{22}y + h_{32}
Utilisez la déformation affine fractionnée pour incorporer une image dans une autre image.
Lorsque vous souhaitez faire correspondre deux images comme indiqué ci-dessous, vous prenez généralement un groupe de points et échantillonnez les points de la matrice d'homographie à calculer, mais il est difficile de faire correspondre les points de l'image en raison d'une erreur de calcul, etc. Devenir.
Cependant, avec la transformation Affin utilisant la méthode de division triangulaire de Dronay, il est possible de faire correspondre les sommets de l'image.
Ensuite, j'expliquerai pourquoi il est possible de faire correspondre les sommets de l'image en utilisant la transformation Affin en utilisant la méthode de division triangulaire de Dronay.
Seuls 3 points sont importants dans la conversion affine.
Et la méthode de division du triangle de Dronay est une méthode de connexion d'un certain groupe de points avec un triangle qui a l'angle minimum maximum lorsqu'un certain groupe de points est obtenu. Voir ci-dessous pour savoir comment choisir l'angle maximal du triangle.
Division triangulaire de Delaunay
Un exemple est présenté ci-dessous.
Programming Computer Vision with Python
En d'autres termes, puisque la transformation affine est appliquée à tous les points, il est possible d'effectuer une transformation avec les sommets mis en correspondance. La méthode de calcul est la méthode DLT et la conversion affine est calculée de la même manière.
Résumé
・ La conversion Affin comporte moins de variations pouvant être converties que la conversion d'homographie. ・ Au lieu de cela, il peut être converti avec seulement 3 points ・ Si 3 points sont suffisants, la méthode de division du triangle de Dronay peut être utilisée, donc une conversion qui correspond aux sommets est possible.
Dans le cas de l'alignement d'image, la transformation de similarité est utilisée car l'image elle-même utilise une image similaire.
\begin{pmatrix}
x' \\
y' \\
1
\end{pmatrix}
=
\begin{pmatrix}
s\ cos(\theta) & -s\ sin(\theta) & t_{x}\\
s\ sin(\theta) & s\ cos(\theta) & t_{y}\\
0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
x \\
y \\
1
\end{pmatrix}
s est le grossissement et θ est le chiffre d'affaires. Puisqu'il peut être agrandi, réduit et tourné par rapport à l'ensemble des coordonnées, c'est la meilleure conversion pour l'alignement. Comparons l'image ci-dessous avec celle qui est simplement moyennée et celle qui est alignée et moyennée. Il peut être confirmé que l'image peut être reproduite plus précisément en alignant.
Programming Computer Vision with Python
Programming Computer Vision with Python
RANSAC
Seule la méthode DLT est introduite, mais comme la méthode DLT n'est pas robuste au bruit, une autre méthode a été proposée. Cette technique est un algorithme chronophage au lieu d'être robuste contre le bruit.
Veuillez vous référer aux documents suivants pour les méthodes spécifiques.
Preemptive RANSAC by David Nister.
Il y a une image prise du même endroit. Si vous souhaitez joindre les images ensemble comme indiqué sur la deuxième figure
Programming Computer Vision with Python
Programming Computer Vision with Python
1: Acquérir les points caractéristiques de l'image par SHIFT (voir ci-dessous pour plus de détails) Aiguille d'or pour quand elle devient une pierre en regardant la formule du traitement d'image 2: Calculer la matrice d'homographie entre les images à l'aide de RANSAC 3: Sélectionnez l'image centrale 4: Ajoutez 0 à gauche et à droite de l'image centrale pour joindre les images déformées. 5: Il est déterminé s'il faut se connecter à gauche ou à droite par le composant parallèle.
Étant donné que la différence entre les images est perceptible, les logiciels disponibles dans le commerce ont un processus pour normaliser et lisser la luminosité.
ipython notebook
Seulement une conversion affine, mais elle est écrite en code.
https://github.com/SnowMasaya/Image_Processing_for_Wedding
Vision par ordinateur pratique Ébauche de cet article
Informatique de l'Université d'État de Pennsylvanie Une conférence sur la conversion d'image à partir de 3 dimensions est décrite, et elle est facile à comprendre car elle n'est pas limitée à 2 dimensions comme dans cet article.
Résumé de l'Université du Michigan
Puisqu'il s'agit d'un matériau de la partie de base de la conversion d'image, la partie de base peut être supprimée.
Preemptive RANSAC by David Nister.
Une excellente diapositive qui montre immédiatement l'algorithme de RANSAC
Réapprentissage après être devenu adulte: conversion Affin
Explication facile à comprendre de la conversion affine