Princípio de correspondência do modelo OpenCV matchTemplate e implementação de código (C#)

  • Princípio básico:
    Use a imagem do modelo como núcleo de convolução, digitalize a imagem de amostra da esquerda para a direita e de cima para baixo, calcule o coeficiente de correlação e encontre objetos semelhantes ao modelo.
    Insira a descrição da imagem aqui
  • método de correspondência

1. Método de correspondência de diferença quadrada (TM_SQDIFF) T é a imagem do modelo, I é a imagem correspondente; na posição (x, y) da imagem correspondente, x' para a direita e y' para baixo enquadram a área de reconhecimento, e quando
Insira a descrição da imagem aqui
a correlação é completamente correspondida,
O valor calculado é 0; quanto maior o valor correspondente, menor a correlação.

2. Método de identificação de diferença quadrada normalizada (TM_SQDIFF_NORMED)

Insira a descrição da imagem aqui
O cálculo da diferença quadrática é normalizado para que o resultado do cálculo seja de 0 a 1.
Quando a imagem corresponde completamente, o resultado do cálculo é 0; quando a imagem não corresponde completamente, o resultado do cálculo é 1.

3. Método de correspondência de correlação (TM_CCORR)

Insira a descrição da imagem aqui
O modelo é multiplicado pela imagem correspondente. Quanto maior o resultado do cálculo, melhor será o resultado da correspondência.
Este método fará com que o resultado do cálculo mude devido a alterações no brilho global da imagem. Por exemplo, quando a imagem fica mais clara, o valor de cinza de cada pixel aumentará, o que fará com que o resultado do cálculo fique maior;

4. Método de correspondência de correlação normalizada (TM_CCORR_NORMED)
Insira a descrição da imagem aqui
5. Método de correspondência de coeficiente de correlação (TM_CCOEFF)
Insira a descrição da imagem aqui
Este método pré-processa a matriz do modelo e a área de reconhecimento antes de realizar a correspondência de correlação: subtraindo a média da matriz da matriz, este Este método resolve o impacto causado pela diferença de brilho entre a imagem do modelo e a imagem de reconhecimento. Pode-se observar pela lógica do resultado do cálculo que quanto maior o resultado do cálculo, melhor será o resultado correspondente.

6. Método de correspondência de coeficiente de correlação normalizado (TM_CCOEFF_NORMED)

Insira a descrição da imagem aqui

Este método normaliza o método de correspondência do coeficiente de correlação. O resultado do cálculo é -1 ~ 1
para uma correspondência completa e -1 para uma incompatibilidade completa.

  • API
public static void MatchTemplate(InputArray image, InputArray templ, OutputArray result, TemplateMatchModes method, InputArray? mask = null);

imagem: imagem de reconhecimento
modelo: modelo imagem
resultado: correspondência de modelo
método de resultado: método de correspondência
máscara: máscara de modelo correspondente, geralmente usando o valor padrão

  • Demonstração
Mat templatePic = Cv2.ImRead(@"C:\Users\Aron\Desktop\01\A.jpg");
Mat testPic = Cv2.ImRead(@"C:\Users\Aron\Desktop\01\B.jpg");


Mat matchResul = new Mat();


//归一化相关系数匹配法
Cv2.MatchTemplate(testPic, templatePic, matchResul, TemplateMatchModes.CCoeffNormed);

//最大最小匹配对象的位置
Point minLoc = new Point(0, 0);
Point maxLoc = new Point(0, 0);

//最大最小配置值
double minVal;
double maxVal;

//查找最大最小值的位置及匹配的值
Cv2.MinMaxLoc(matchResul, out minVal, out maxVal, out minLoc, out maxLoc);

//框选出识别对象
//归一化相关系数匹配方法取最大值
Scalar scalar = new Scalar(0, 0, 255);
Cv2.Rectangle(testPic,maxLoc, new Point(maxLoc.X+templatePic.Cols,maxLoc.Y+templatePic.Rows), scalar, 7);

//显示相关性计算结果
Cv2.PutText(testPic, Math.Round(maxVal,4).ToString(), new Point(maxLoc.X, maxLoc.Y -50), HersheyFonts.HersheyDuplex, 2, scalar, 8);


picBox_Display.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(templatePic);
picBox_After.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(testPic);

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Notas adicionais:
A biblioteca OpenCV usada no .NET neste caso é OpenCvSharp4

Biblioteca OpenCv para ambiente .NET

Acho que você gosta

Origin blog.csdn.net/weixin_40671962/article/details/127464728
Recomendado
Clasificación