public ProcessImage ( |
||
image | Source image to process. | |
return | List |
public List<IntPoint> ProcessImage(Bitmap image)
{
// check image format
if (
(image.PixelFormat != PixelFormat.Format8bppIndexed) &&
(image.PixelFormat != PixelFormat.Format24bppRgb) &&
(image.PixelFormat != PixelFormat.Format32bppRgb) &&
(image.PixelFormat != PixelFormat.Format32bppArgb)
)
{
throw new UnsupportedImageFormatException("Unsupported pixel format of the source image.");
}
// lock source image
BitmapData imageData = image.LockBits(
new Rectangle(0, 0, image.Width, image.Height),
ImageLockMode.ReadOnly, image.PixelFormat);
List<IntPoint> corners;
try
{
// process the image
corners = ProcessImage(new UnmanagedImage(imageData));
}
finally
{
// unlock image
image.UnlockBits(imageData);
}
return corners;
}
SusanCornersDetector::ProcessImage ( |
|
SusanCornersDetector::ProcessImage ( |
public void RansacLineConstructorTest2() { Accord.Math.Random.Generator.Seed = 0; Bitmap image = Accord.Imaging.Image.Clone(Resources.noise_line); //Accord.Controls.ImageBox.Show(image); var detector = new SusanCornersDetector(); List<IntPoint> cloud = detector.ProcessImage(image); Assert.AreEqual(211, cloud.Count); Bitmap marks = new PointsMarker(cloud, Color.Pink).Apply(image); //Accord.Controls.ImageBox.Show(marks); RansacLine ransac = new RansacLine(5, 1e-10); Line line = ransac.Estimate(cloud); Assert.AreEqual(0.501134932f, line.Intercept, 1e-5); Assert.AreEqual(-0.865369201f, line.Slope, 1e-5); //var result = new LineMarker(line).Apply(image); //Accord.Controls.ImageBox.Show(result); }