Comment tracer plusieurs images ajustées côte à côte en utilisant Python

Comment superposer des images en utilisant bien Python dans l'espace WCS

Environnement

OK si matplotlib et astropy sont installés en python. Si le système anconda3 est inclus, il est OK par défaut.

Un exemple de chevauchement de deux images avec une trame d'argent

En prenant comme exemples les images de lumière visible et de rayons X NGC4051, le tracé d'image entier et le tracé agrandi près du centre sont montrés à titre d'exemples.

point

--Si vous souhaitez agrandir un certain endroit, coupez l'objet WCS de la même manière que le fichier image. La partie hriwcs [hricx-hridx: hricx + hridx, hricy-hridx: hricy + hridx] de l'exemple de code. Vous pouvez donner ceci à l'option wcs de matplotlib.

――Si vous souhaitez afficher deux images l'une sur l'autre, cela devient un problème difficile. Dans ce cas, il est brièvement résumé dans Comment fusionner des images avec des coordonnées WCS et tracer avec python.

Stockage de code et de fichiers

Pour savoir comment prendre une image, Comment rechercher à l'aide de la requête astro de python et obtenir une image ajustée avec skyviewを参考にされたい。

Exemple de code

qiita_plot_fits_2image.py



import matplotlib 
matplotlib.use('TkAgg')
import glob 
import matplotlib.pyplot as plt
import sys
from matplotlib.colors import LogNorm
from astropy.wcs import WCS
from astropy.io import fits

name="NGC4051"

hri = glob.glob(name + '*HRI*.fits')
dss = glob.glob(name + '*DSS*.fits')	

if len(hri) == 1 and len(dss) == 1:
	pass
else:
	print("need to store HRI and DSS fits")

F = plt.figure(figsize=(10,8))

hrifilename = hri[0]
hriname = hrifilename.replace(".fits",".png ")
hrihdu = fits.open(hrifilename)[0]
hriwcs = WCS(hrihdu.header)
hridata = hrihdu.data

hrixlen, hriylen = hridata.shape
hricx = int(0.5 * hrixlen)
hricy = int(0.5 * hriylen)
hridx = int(hrixlen*0.1)
hriwcscut = hriwcs[hricx-hridx:hricx+hridx,hricy-hridx:hricy+hridx]

dssfilename = dss[0]
dssname = dssfilename.replace(".fits",".png ")
dsshdu = fits.open(dssfilename)[0]
dsswcs = WCS(dsshdu.header)
dssdata = dsshdu.data

dssxlen, dssylen = dssdata.shape
dsscx = int(0.5 * dssxlen)
dsscy = int(0.5 * dssylen)
dssdx = int(dssxlen*0.1)
dsswcscut = dsswcs[dsscx-dssdx:dsscx+dssdx,dsscy-dssdx:dsscy+dssdx]

plt.figtext(0.45,0.93, name, size="large")
plt.figtext(0.15,0.9, "X-ray, Rosat HRI")
plt.figtext(0.57,0.9, "Optical, UK Shimidt")				

plt.subplot(221, projection=dsswcs)
#		plt.subplot(221, projection=hriwcs)		
try:
	plt.imshow(hridata, origin='lower', norm=LogNorm())
	plt.colorbar()					
except:
	print("ERROR, couldn't plot log-z scale")			
	plt.close()

plt.grid(color='white', ls='solid')
plt.xlabel('Galactic Longitude')
plt.ylabel('Galactic Latitude')

plt.subplot(223, projection=dsswcscut)
#		plt.subplot(223, projection=hriwcscut)		
plt.imshow(hridata[hricx-hridx:hricx+hridx,hricy-hridx:hricy+hridx], origin='lower')
plt.colorbar()		
plt.grid(color='white', ls='solid')
plt.xlabel('Galactic Longitude')
plt.ylabel('Galactic Latitude')


plt.subplot(222, projection=dsswcs)
try:
	plt.imshow(dssdata, origin='lower', norm=LogNorm())
	plt.colorbar()								
except: 
	print("ERROR, couldn't plot log-z scale")
	plt.imshow(dssdata, origin='lower')
	plt.colorbar()		
	
plt.grid(color='white', ls='solid')
plt.xlabel('Galactic Longitude')

plt.subplot(224, projection=dsswcscut)
plt.imshow(dssdata[dsscx-dssdx:dsscx+dssdx,dsscy-dssdx:dsscy+dssdx], origin='lower')
plt.colorbar()		
plt.grid(color='white', ls='solid')
plt.xlabel('Galactic Longitude')

plt.savefig(name  + ".png ")
plt.close()


Résultat de sortie

Les deux aperçus du haut montrent l'axe z sous forme de journal et les deux derniers sous forme linéaire. Lors de l'affichage de l'axe z sous forme de journal, on peut dire qu'il n'y a que des données vides ou nulles, alors essayez sauf est utilisé pour l'éviter.

NGC4051.png

Exemple de référence

[Comment rechercher à l'aide de la requête astro de python et obtenir des images ajustées avec skyview]( Un exemple d'animation gif créée en acquérant des images de rayons X (ROSAT) et de lumière visible (DSS) à l'aide de https://qiita.com/yamadasuzaku/items/df185d151248578e8e1e). Pour créer une animation gif, je l'ai générée avec convert -delay 100 -loop 1 * .png xrayopt.gif.

Recommended Posts

Comment tracer plusieurs images ajustées côte à côte en utilisant Python
Comment récupérer plusieurs tableaux à l'aide de slice en python.
Comment collecter des images en Python
Comment tracer les données de lumière visible d'une galaxie à l'aide de la base de données OpenNGC en python
[Google Colab] Je souhaite afficher plusieurs images côte à côte dans une vignette
[python] Comment afficher les éléments de la liste côte à côte
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Comment prendre plusieurs arguments lors d'un traitement parallèle à l'aide du multitraitement en python
Comment écrire une concaténation de chaînes sur plusieurs lignes en Python
Comment afficher plusieurs images d'une galaxie en tuiles
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Comment exécuter une commande à l'aide d'un sous-processus en Python
Comment développer en Python
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
Comment définir plusieurs variables dans une instruction Python for
Comment installer Python à l'aide d'Anaconda
Comment utiliser SQLite en Python
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment gérer le japonais avec Python
Extraction d'objets dans l'image par correspondance de modèles en utilisant OpenCV avec Python
Comment supprimer plusieurs positions (index) spécifiées dans une liste Python
Comment afficher les marques de légende en un avec le tracé Python 2D
Comment générer un nouveau groupe de journaux dans CloudWatch à l'aide de python dans Lambda
[Introduction à Python] Comment utiliser la classe en Python?
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
[Itertools.permutations] Comment créer une séquence en Python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Comment utiliser BigQuery en Python
Connectez-vous à Slack à l'aide de requêtes en Python
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
Fonction pour enregistrer les images par date [python3]
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
[Introduction à Python] Comment supprimer des lignes qui remplissent plusieurs conditions dans Pandas.DataFrame
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
Comment écrire une chaîne de caractères lorsqu'il y a plusieurs lignes en python
Comment remplir dynamiquement des zéros avec Python
Comment utiliser les expressions régulières en Python
[Rails] Comment détecter des images radicales en analysant des images à l'aide de l'API Cloud Vision
Comment afficher Hello World en python
Comment rechercher à l'aide de l'Astroquery de Python et obtenir des images ajustées avec Skyview
Blender 2.9, Python, sélectionnez plusieurs maillages par coordonnées
Comment utiliser is et == en Python
Comment écrire Ruby to_s en Python
Comment afficher les images dans l'administration de Django
Comment dessiner une image OpenCV avec Pygame
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Que faire lorsque la version Python est ancienne dans Cloud 9 créée par une autre personne
Comment créer un environnement pour utiliser plusieurs versions de Python sur un Mac
Comment lire toutes les classes contenues dans * .py dans le répertoire spécifié par Python
Comment étudier l'examen de base de la certification d'ingénieur Python 3 par un débutant Python (passé en août 2020)
J'ai fait un module en langage C qui filtre les images chargées par Python
Comment utiliser la bibliothèque C en Python