Tudiluu liebe Mitprogrammierer
Ich arbeite zur zeit viel mit visio programmen in Java.
Programmiere zur zeit ein ObjekterkennungsProgramm.
Dazu wollte ich einen Thinning Algorithmus verwenden... so, da hapers. Es sind vereinzelt Java Thinning programme zu finden.. die schiessen aber weit über mein ziel hinaus. Brauche etwas Kompaktes.
Hab dazu n bissle im Buch Mashine Vision gewühlt und das Thinning gefunden. leider ohne code.. nur ein unverständlicher text wie man ein Bild Blury macht.
Irgendie sollte der Folgende Code so geändert werden um daraus ein Thinning aglo zu machen.
Momentan macht der Algo von aussen nach innen eine grauskallierung aber in der mitte wäre das Prinzip des Thinning vorganden... wenn nur die Grauskallierung nich wäre^^
Jemand ne idee was da geänder werden muss?
oder hat allgemein nen besseren code?
greets B00bie
Ich arbeite zur zeit viel mit visio programmen in Java.
Programmiere zur zeit ein ObjekterkennungsProgramm.
Dazu wollte ich einen Thinning Algorithmus verwenden... so, da hapers. Es sind vereinzelt Java Thinning programme zu finden.. die schiessen aber weit über mein ziel hinaus. Brauche etwas Kompaktes.
Hab dazu n bissle im Buch Mashine Vision gewühlt und das Thinning gefunden. leider ohne code.. nur ein unverständlicher text wie man ein Bild Blury macht.
Irgendie sollte der Folgende Code so geändert werden um daraus ein Thinning aglo zu machen.
Momentan macht der Algo von aussen nach innen eine grauskallierung aber in der mitte wäre das Prinzip des Thinning vorganden... wenn nur die Grauskallierung nich wäre^^
Jemand ne idee was da geänder werden muss?
oder hat allgemein nen besseren code?
greets B00bie
Java:
BufferedImage img = ImageIO.read(new File("C:/Dokumente und Einstellungen/siegt5/Desktop/ThinningTest.jpg"));
int height = img.getHeight(), width = img.getWidth();
int greyLevel = 0;
boolean done = false;
//BufferedImage img2 = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
//IMAGE COPY
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
img2.setRGB(x, y, img.getRGB(x, y));
}
}
while (!done && greyLevel < 0xFFFFFF)
{
greyLevel++;
done = true;
// pixel deklaration
for (int y = 1; y < height - 1; y++)
{
for (int x = 1; x < width - 1; x++)
{
int a1 = img.getRGB(x - 1, y - 1);
int a2 = img.getRGB(x, y - 1);
int a3 = img.getRGB(x + 1, y - 1);
int b1 = img.getRGB(x - 1, y);
int b2 = img.getRGB(x, y);
int b3 = img.getRGB(x + 1, y);
int c1 = img.getRGB(x - 1, y + 1);
int c2 = img.getRGB(x, y + 1);
int c3 = img.getRGB(x + 1, y + 1);
if (b2 == 0xFFFFFF)
{
int z = Math.min(c3, Math.min(Math.min(Math.min(a1, a2), Math.min(a3, b1)), Math.min(Math.min(b2, b3), Math.min(c1, c2))));
if (z != greyLevel && z != 0xFFFFFF)
{
img2.setRGB(x, y, greyLevel);
done = false;
}
}
}
}
}
saveJPG(img2, "C:/Dokumente und Einstellungen/siegt5/Desktop/test.jpg");
Zuletzt bearbeitet: