Mein letztes Ziel ist die Implementierung eines Cloud-Erkennungsalgorithmus mit C++. Ich hatte jedoch ein Problem.Pixelinformationen extrahieren (dl) LibTIFF verwenden
Ich habe ein Problem mit dem Extrahieren von Informationen aus Pixeln. Für die Datenvorverarbeitung wurde SNAP verwendet und ich kann dort viele Informationen für ein gegebenes Pixel (Länge, Breite, Bandwert usw.) sehen.
Das Problem entsteht, wenn ich das Bild als TIFF-Datei exportieren. Um damit umzugehen, habe ich LibTIFF-Bibliothek verwendet. Allerdings weiß ich nicht wirklich, wie man bestimmte Informationen über ein bestimmtes Pixel extrahiert. Zur Zeit habe ich einen Standardcode in der LibTIFF-Dokumentation, der alle Pixel eines Bildes durchläuft und seinen Wert ausgibt. Leider ergeben die Werte, die ich bekomme, keinen Sinn.
TIFF* tif = TIFFOpen(filename, "r");
if (tif) {
uint32 imagelength;
double * buf;
tsize_t scanline;
uint32 row;
uint32 i;
tsize_t y;
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength);
scanline = TIFFScanlineSize(tif);
buf = (double *) _TIFFmalloc(scanline);
for (row = 0; row < imagelength; row++) {
int n = TIFFReadScanline(tif, buf, row);
for (y = 0; y < scanline; y++) {
cout << "Row: " << row << " y: " << y << " " << (double) buf[y]
<< endl;
}
}
_TIFFfree(buf);
TIFFClose(tif);
}
So ist meine Frage gibt es eine einfache Möglichkeit, eine bestimmten Informationen für ein bestimmtes Pixel zu extrahieren, idealerweise LibTIFF mit? Wenn nicht, was sollte der beste Weg sein? Entschuldigung, wenn die Frage sehr einfach ist, konnte ich einfach keine Informationen darüber finden. Danke im Voraus.
EDIT: Ausgabe von identify -verbose file.tif
Format: TIFF (Tagged Image File Format)
Mime type: image/tiff
Class: DirectClass
Geometry: 1830x1830+0+0
Resolution: 1x1
Print size: 1830x1830
Units: Undefined
Colorspace: Gray
Type: Grayscale
Endianess: MSB
Depth: 16/8-bit
Channel depth:
Gray: 8-bit
Channel statistics:
Pixels: 3348900
Gray:
min: 0 (0)
max: 13107 (0.2)
mean: 1582.66 (0.0241498)
standard deviation: 1200.55 (0.0183193)
kurtosis: 2.79689
skewness: 1.81966
entropy: 0.63063
Colors: 34
Rendering intent: Undefined
Gamma: 0.454545
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 1830x1830+0+0
Dispose: Undefined
Iterations: 0
Compression: None
Orientation: TopLeft
Properties:
comment: band2
date:create: 2018-01-09T21:48:10+00:00
date:modify: 2018-01-09T21:48:14+00:00
signature: b3783beb7f7d2bdb32c3c64f8878a02c238a10f221f6a05f93991b26a58a4c78
tiff:alpha: unspecified
tiff:endian: msb
tiff:photometric: min-is-black
tiff:rows-per-strip: 1830
Artifacts:
verbose: true
Tainted: False
Filesize: 49.3701MiB
Number pixels: 3348900
Pixels per second: 3.88504MB
User time: 0.484u
Elapsed time: 0:01.861
Warum denken Sie Ihre TIFF enthält verdoppelt? Hast du versucht 'tiffdump yourFile.tif' oder ** ImageMagick ** '' identify -verbose yourFile.tif'? –
Ich nahm an, TIFF enthält Doubles, nur weil einige der Werte eines Pixels (Band-Wert, zum Beispiel) sind verdoppelt. Ich bin mir jedoch ziemlich sicher, dass ich falsch liege. Nein, ich habe Tiffdump oder ImageMagick nicht verwendet. Wenn ich es richtig verstehe, würden sie mir helfen, den Inhalt eines Pixels herauszufinden? Und dann extrahieren, was benötigt wird? – Mantas
Sie müssen nur einen oder beide ausführen und sehen, womit Sie es zu tun haben. Klicken Sie unter Ihrem Beitrag auf "Bearbeiten" und fügen Sie die Ausgabe ein. –