1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Gradientenbetrag Sobel

  • SansuerMarcel
  • 20. Oktober 2016 um 11:46
  • Unerledigt
  • SansuerMarcel
    1
    SansuerMarcel
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 20. Oktober 2016 um 11:46
    • #1

    Hi,

    ich habe gerade etwas Schwierigkeiten meine Fehler in meinem Code zu finden.
    Das Resultat Bild ist deutlich zu dunkel.


    hier der Code:

    Code
    private void gradientenBetrag(int[] srcPixels, int[] dstPixels, int width, int height, double gradientenBetrag) {
            for (int y = 0; y < height; y++) {
                for (int x = 0; x < width; x++) {
                    int pos = y * width + x;
    
    
    
    
                    counter = 0;
                    for (int yK = -1; yK <= 1; yK++) {
                        for (int xK = -1; xK <= 1; xK++) {
                            if (yK + y < 0 || yK + y > height - 1 || xK + x < 0 || xK + x > width - 1) {
                                sobelXTemp[counter] = srcPixels[pos] & 0xff;
                                counter++;
                            } else {
                                kernelPos = (y + yK) * width + x + xK;
                                sobelXTemp[counter] = srcPixels[kernelPos] & 0xff;
                                counter++;
                            }
                        }
                    }
                    // sobel X
                    // ergebnis= ((b-a)+(d-c)+(f-e))/6
                    int resultX = getSobelGradient(sobelXTemp[2], sobelXTemp[0], sobelXTemp[5], sobelXTemp[3],
                            sobelXTemp[8], sobelXTemp[6], 0);
                    int resultY = getSobelGradient(sobelYTemp[6], sobelYTemp[0], sobelYTemp[7], sobelYTemp[1],
                            sobelYTemp[8], sobelYTemp[2], 0);
    
    
    
    
                    int result = Math.abs(resultX)+ Math.abs(resultY);
                    //≈
                    //int result = (int) Math.sqrt((resultX*resultX)+(resultY*resultY));
    
                    dstPixels[pos] = (0xFF << 24) | (result << 16) | (result << 8) | result;
                }
            }
        }
    Alles anzeigen
  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Tags

  • java
  • sobel
  • gradientenbetrag

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English