1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Gradientenbetrag Sobel

  • SansuerMarcel
  • 20. Oktober 2016 um 11:46
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • SansuerMarcel
    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.

Tags

  • java
  • sobel
  • gradientenbetrag
  1. Datenschutzerklärung
  2. Impressum