Ich möchte ein Bild im Format passt auf eine kleinere Dimension. Zum Beispiel möchte ich mein 100x100-Pixel-Bild zu einem 58x58-Pixel-Bild vergrößern. Die Werte des Arrays sind Intensitäts- oder Flusswerte. Ich möchte, dass die Gesamtintensität des Bildes nach der Transformation erhalten bleibt. Dies funktioniert nicht mit skimage resize. Mein Gesamtwert verringert sich je nachdem, welchen Faktor ich heraufskaliere oder verkleinere. Ich habe unten den Code gezeigt, den ich bisher versucht habe.Skimage Resize ändert die Gesamtsumme der Array
import numpy as np
from skimage.transform import resize
image=fits.open(directory+file1)
cutout=image[0].data
out = resize(cutout, (58,58), order=1, preserve_range=True)
print(np.sum(out),np.sum(cutout))
Meine Ausgabe ist:
0.074657436655 0.22187 (I want these two values to be equal)
Wenn ich es auf das gleiche Maß-Skala:
out = resize(cutout, (100,100), order=1, preserve_range=True)
print(np.sum(out),np.sum(cutout))
Meine Ausgabe ist sehr nah, was ich will:
0.221869631852 0.22187
Ich habe das gleiche Problem, wenn ich versuche, zu erhöhen ase auch die Bildgröße.
out = resize(cutout, (200,200), order=1, preserve_range=True)
print(np.sum(out),np.sum(cutout))
Ausgang:
0.887316320731 0.22187
Ich würde gerne wissen, ob es eine Abhilfe für dieses Problem ist.
EDIT 1: meine Gesamtsumme konserviert erhöhen oder die Größe meines Bildes zu verringern, dann
Ich habe erkannt, dass, wenn ich mein Bild durch das Quadrat der Skala, von denen ich möchte multiplizieren.
Zum Beispiel:
x=58
out = resize(cutout, (x,x), order=1, preserve_range=True)
test=out*(100/x)**2
print(np.sum(test),np.sum(cutout))
Meine Ausgabe ist ganz in der Nähe zu dem, was ich will, aber etwas höher:
0.221930548915 0.22187
Ich habe versucht, diese mit unterschiedlichen Abmessungen und es funktioniert mit Ausnahme wirklich kleine Werte. Kann jemand erklären, warum diese Beziehung wahr ist oder ist das nur ein statistischer Zufall?
warum renormieren einfach nicht die Intensitäten nach der Skalierung? – maxymoo
Sollte ich meine Intensität als das Quadrat meines Skalierungsfaktors normalisieren? Wenn dies der Fall ist, können Sie mir sagen, warum diese Beziehung wahr ist? – Vishnu
Vielleicht möchten Sie einen Blick auf: http://scikit-image.org/docs/dev/api/skimage.transform.html#skimage.transform.downscale_local_mean –