Principio : Cuando la transición de píxeles en el borde de la imagen es grande, se obtiene la primera derivada de la imagen y el valor máximo de la derivada es la ubicación del píxel del borde.
API relacionadas:
public static void Sobel(InputArray src, OutputArray dst, MatType ddepth, int xorder, int yorder, int ksize = 3, double scale = 1, double delta = 0, BorderTypes borderType = BorderTypes.Reflect101);
Descripción del parámetro:
cuando dx = 0, dy = 1, el contorno en la dirección y se conserva claramente;
cuando dx = 1, dy = 0, el contorno en la dirección x se conserva claramente;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
inputMat = Cv2.ImRead(picFile, ImreadModes.Grayscale);
outMat = new Mat(new Size(inputMat.Cols, inputMat.Rows), inputMat.Type());
Cv2.Sobel(inputMat, outMat, MatType.CV_8UC1, 1, 1,5);
picBox_Display.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(inputMat);
picBox_After.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(outMat);
}
Notas adicionales:
La biblioteca OpenCV utilizada en .NET en este caso es OpenCvSharp4