Kormeerka deegaanka, beeraha, qorsheynta magaalooyinka, maareynta masiibooyinka, iyo daraasaadka isbedelka cimilada ayaa dhamaantood ka faa'iideystey falanqaynta sawirada dayax-gacmeedka.
Waxaan heli karnaa aragtiyo muhiim ah oo ku saabsan sifooyinka meereheena, isbeddelada, iyo firfircoonida anagoo ka faa'iidaysanayna tirada tirada badan ee xogta uu duubay dayax gacmeedyada indha-indheeya Dhulka.
Python, luuqad barnaamijyo badan leh oo xoog badan, waxay bixisaa hab-nololeed qani ah oo maktabado ah iyo qalab loogu talagalay habaynta sawirka dayax-gacmeedka oo degdeg ah oo waxtar leh.
Isticmaalka Falanqaynta sawirka dayax-gacmeedka furaya adduunyo ah fursadaha. Waxay awood noo siinaysaa inaan ka soo saarno macluumaadka waxtarka leh ee sawirrada dayax-gacmeedka, sida kala soocidda daboolka dhulka, qiimeynta caafimaadka dhirta, la socodka ballaarinta magaalooyinka, iyo khariideynta xeebaha.
Waxaan si fudud u habayn karnaa, soo bandhigi karnaa, una falanqeyn karnaa sawirada dayax-gacmeedka annagoo ka faa'iidaysanayna kala duwanaanshaha Python iyo qaybaha sida rasterio, numpy, iyo matplotlib.
Mid ka mid ah faa'iidooyinka aasaasiga ah ee u adeegsiga Python ee falanqaynta sawirka dayax-gacmeedka waa tiro balaadhan oo ah qaybaha habaynta xogta geospatial.
Rastero, tusaale ahaan, waxa uu leeyahay is-dhexgal fudud oo loogu talagalay akhrinta iyo wax ka beddelka macluumaadka rasterka, taas oo ka dhigaysa mid ku habboon in lagu shaqeeyo faylalka sawirka dayax-gacmeedka.
Qaybta nambarada waxay bixisaa hawlo isku dubarid oo casri ah oo lagu samaynayo xisaabinta degdega ah iyo tirakoobka xogta sawirka. Matplotlib wuxuu sidoo kale awood noo siinayaa inaan abuurno muuqaalo khuseeya si ay u caawiyaan tarjumaada iyo isgaarsiinta natiijooyinka falanqaynta.
Qaybaha soo socda, waxaan ku eegi doonaa tusaalooyin dhab ah iyo qoraalo kood ah si aan u tuso sida Python loogu isticmaali karo falanqaynta sawirada dayax-gacmeedka.
Waxaan dulmari doonaa sida loo furo sawirada dayax-gacmeedka, u sawirida xogta sawirka, soo saarta xogta badan, xisaabinta statistics band, oo aan u samayno falanqayn gaar ah sida Tusaha Kala Duwanaanta Dhirta ee Caadiga ah (NDVI).
Tusaalooyinkan ayaa kaa caawin doona inaad bilowdo mawduuca xiisaha leh ee falanqaynta sawirada dayax-gacmeedka ee Python.
Marka hore, waxaan u baahanahay inaan soo dejino qaar ka mid ah maktabadaha si ay nooga caawiyaan hawshayada.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Sawirka iyo Furitaanka Sawirka Satellite-ka
Waxaan maktabadda Rasteri ee qaybtan ku jirta si aan u galno sawirka dayax-gacmeedka ee uu bixiyo satalayt_image_path.
Faylka sawirka waxaa la furay iyadoo la isticmaalayo habka rasteriyo.open(), shayga natiijaduna waa satellite_image, wuxuu u taagan yahay sawirka la furay.
Hawshan, waxaan u isticmaalay sawirka xiriirkan: https://unsplash.com/photos/JiuVoQd-ZLk oo waxaan ugu keydiyay kombuyuutarkayga sida "satellite.jpg".
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Furitaanka sawirka ka dib, waxaan u akhrineynaa si qaabaysan anagoo adeegsanayna shaqada akhriska() shayga satalayt_image. Qiimaha pixels ee qayb kasta oo ka mid ah sawirada dayax-gacmeedka waxa lagu kaydiyaa qaabka sawirka.
# Read the image as an array
image_array = satellite_image.read()
Si muuqaal ahaan loo qiimeeyo sawirka dayax-gacmeedka, waxaan isticmaalnaa qalabka matplotlib.pyplot si aan u soo saarno jaantus 10×10-inch ah.
Qaabka sawirka waxa lagu muujiyay iyadoo la isticmaalayo habka imshow(). Hawlgalka transpose(1, 2, 0) waxa loo istcmaalay in dib loogu habeeyo cabbirada sawirka sawirka si uu ugu habboonaado nidaamka la filayo imshow().
Ugu dambeyntii, dhidibka ('off') wuxuu qariyaa calaamadaha dhidibka, isagoo siinaya muuqaal cad sawirka dayax-gacmeedka.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Soo saarida metadata
Waxaan soo saarnaa macluumaadka muhiimka ah ee xogta badan ee ku saabsan sawirka dayax-gacmeedka ka dib markaan furno oo muujinno. Macluumaadkani wuxuu naga caawinayaa fahamka tayada sawirka wuxuuna bixiyaa macnaha guud ee baaritaanka mustaqbalka.
image_width = satellite_image.width
image_height = satellite_image.height
image_crs = satellite_image.crs
image_count = satellite_image.count
print("Image Width:", image_width)
print("Image Height:", image_height)
print("Coordinate Reference System:", image_crs)
print("Number of Bands:", image_count)
Isticmaalka ballaca iyo sifada dhererka shayga satalayt_image, waxaanu soo saarnay ballaca iyo dhererka sawirka. Hantida crs waxa loo isticmaalaa in lagu soo saaro nidaamka tixraaca isku xirka sawirka (CRS).
CRS waxay ku siinaysaa macluumaadka nidaamka tixraaca ee goobta, taasoo noo ogolaanaysa inaan ku dhigno iskuduwayaasha sawirada meelaha dhabta ah.
Ugu dambayntii, waxaanu isticmaalnaa sifada tirinta shayga satalayt_image si aanu u xisaabino tirada xadhkaha sawirka. Xogtan ayaa muhiim u ah falanqaynta dambe sababtoo ah waxay noo ogolaanaysaa inaan helno qiimaha pixel ee koox kasta oo sawirka sawirka ah.
3. Xisaabinta Tirakoobka Kooxda
Waxaan u xisaabineynaa tirokoobyada koox kasta ee sawirka sawirka ee qaybtan. Wareeggu wuxuu ku celceliyaa koox kasta, iyo maktabadda tirada min, ugu badnaan, celceliska, iyo hawlaha std ayaa loo isticmaalaa in lagu xisaabiyo tirakoobyadan.
Liiska qaamuusyadu wuxuu kaydiyaa tirooyinka koox kasta.
band_stats = []
for band in range(image_count):
band_data = image_array[band]
band_min = np.min(band_data)
band_max = np.max(band_data)
band_mean = np.mean(band_data)
band_std = np.std(band_data)
band_stats.append({'Band': band+1, 'Min': band_min, 'Max': band_max, 'Mean': band_mean, 'Std': band_std})
print("Band Statistics:")
for stats in band_stats:
print(stats)
Wareegtada wareegtadu waxay ku wareegtaa guuto kasta, iyadoo kooxdu doorsoomayso oo ka dhigan tusmada band. Isticmaalka image_array[band], waxaanu ka soo saarnay qiyamka pixels ee sawirka ee koox kasta.
Kadib, guutada hadda jirta, np.min(), np.max(), np.mean(), iyo np.std() hawlaha waxa loo isticmaalaa in lagu go'aamiyo ugu yaraan, ugu badnaan, celceliska, iyo weecanaanta caadiga ah ee pixel qiyamka.
Xogta la xisaabiyay ee koox kasta waxa lagu kaydiyaa qaamuus wata furayaal sida 'Band,' 'Min,' Max,' 'Mean,' iyo 'Std. Qaamuus kastaa waxa lagu lifaaqaa liiska kooxeedka. Ugu dambeyntii, koox kasta xogteeda waxaa lagu daabacaa console-ka.
4. Xisaabinta (NDVI) (Tusmada Kala Duwanaanshaha Dhirta ee Caadiga ah).
NDVI waa cabbir caan ah oo lagu cabbiro caafimaadka dhirta. Qeybtaan, waxaan ku hubineynaa in sawirka uu ku jiro ugu yaraan afar qaybood, kuwaas oo looga baahan yahay xisaabinta NDVI.
red_band = None
nir_band = None
if image_count >= 4:
red_band = image_array[2] # assuming red band is at index 2
nir_band = image_array[3] # assuming near-infrared band is at index 3
if red_band is not None and nir_band is not None:
ndvi = (nir_band - red_band) / (nir_band + red_band)
# Visualize the NDVI
plt.figure(figsize=(10, 10))
plt.imshow(ndvi, cmap='RdYlGn')
plt.colorbar(label='NDVI')
plt.title('Normalized Difference Vegetation Index (NDVI)')
plt.axis('off')
plt.show()
else:
print("Error: The satellite image does not have the required bands for NDVI calculation.")
Si aan u bilowno, waxaanu dhignay doorsoomayaasha red_band iyo nir_band midna. Doorsoomiyaha image_count ayaa markaa loo isticmaalaa si loo go'aamiyo haddii sawirku ka kooban yahay ugu yaraan afar qaybood.
Haddi ay sidaas tahay, waxa aanu ka nisbaynaynaa in kooxda guduudan ay tahay index 2 iyo infrared dhow (NIR) band waa index 3. Xadhkaha u dhigma ee sawirka sawirka waxa loo qoondeeyay doorsoomayaasha red_band iyo nir_band.
Haddii labada xabbo ee cas iyo NIR la heli karo, NDVI waxaa lagu xisaabiyaa qaacidada (NIR – Cas) / (NIR + Casaan). Tirooyinka NDVI ee natiijadu waxay tilmaamayaan tusmada dhirta ee pixel kasta ee sawirka.
Waxaan markaa aragnaa NDVI anagoo abuurayna shax cusub oo muujinaya NDVI array annagoo isticmaalaya imshow(). Habka midabaynta() waxa uu ku darayaa bar midab leh goobta, siinta NDVI waxay qiimeysaa tixraac muuqaal ah.
Si aan diiradda u saarno gebi ahaanba bandhigga NDVI, waxaan sidoo kale u qeexnay qoraal ku saabsan goobta oo aan ka saarno calaamada dhidibka leh ee dhidibka ah ('off'). Ugu dambeyntii, qisada waxaa lagu muujiyay plt.show().
Farriinta khaladka ah ayaa loo qoraa console-ka haddii sawirku ka maqan yahay xargaha loo baahan yahay ee xisaabinta NDVI (ie, in ka yar afar qaybood).
5. Keenida Sawirka Satellite-ka
Waxaa ugu fiican in la isticmaalo shaqada u dhow () si loo xiro faylka sawirka dayax-gacmeedka ka dib marka la sameeyo falanqaynta iyo daawashada. Tani waxay xoraynaysaa qalab kasta oo nidaamka ah oo ku xidhan faylka sawirka.
satellite_image.close()
Waa kan xalkeyga:
Taasi waa!
Notes Final
Doorka Python ee kaalmaynta daraasaadka xog-ururintan weyn ayaa noqonaysa mid sii kordheysa oo muhiim ah maadaama helitaanka iyo xallinta sawirada dayax-gacmeedku ay korodho.
Awoodda loo isticmaalo Python si loo galo, loo habeeyo, loo falanqeeyo, oo loo muujiyo sawirada dayax-gacmeedku waxay bixisaa dariiqa codsiyada hal-abuurka ah iyo fikradaha keeni kara isbeddel wanaagsan iyo aqoon weyn oo adduunkeena ah.
Xusuusnow inaad sahamiso xulashada ballaaran ee agabka, casharrada, iyo maktabadaha la heli karo si aad u kordhiso aqoontaada iyo kartidaada intaad ku sii waddo tacaburkaaga falanqaynta sawirka dayax-gacmeedka adoo isticmaalaya Python.
Sii wad inaad xiisaynayso, sahamiso, oo isticmaasho awoodaha Python si aad u daaha ka qaaddo waxyaalaha qarsoon ee ku dhex aasan sawirada dayax-gacmeedka.
Leave a Reply