ការត្រួតពិនិត្យបរិស្ថាន កសិកម្ម ការធ្វើផែនការទីក្រុង ការគ្រប់គ្រងគ្រោះមហន្តរាយ និងការសិក្សាអំពីការប្រែប្រួលអាកាសធាតុ សុទ្ធតែទទួលបានអត្ថប្រយោជន៍ពីការវិភាគរូបភាពផ្កាយរណប។
យើងអាចទទួលបានការយល់ដឹងសំខាន់ៗអំពីលក្ខណៈ ការផ្លាស់ប្តូរ និងសក្ដានុពលរបស់ភពផែនដីយើង ដោយទាញយកទិន្នន័យយ៉ាងច្រើនដែលបានកត់ត្រាដោយផ្កាយរណបសង្កេតផែនដី។
Python ដែលជាភាសាសរសេរកម្មវិធីដ៏សម្បូរបែប និងរឹងមាំ ផ្តល់នូវប្រព័ន្ធអេកូឡូស៊ី និងឧបករណ៍ដ៏សម្បូរបែបសម្រាប់ដំណើរការរូបភាពផ្កាយរណបយ៉ាងឆាប់រហ័ស និងមានប្រសិទ្ធភាព។
ការប្រើប្រាស់ ការវិភាគរូបភាពផ្កាយរណប បើកពិភពលោកនៃលទ្ធភាព។ វាអនុញ្ញាតឱ្យយើងទាញយកព័ត៌មានដែលមានប្រយោជន៍ពីរូបថតផ្កាយរណប ដូចជាការចាត់ថ្នាក់គម្របដី ការវាយតម្លៃសុខភាពបន្លែ ការតាមដានការពង្រីកទីក្រុង និងការគូសផែនទីឆ្នេរសមុទ្រ។
យើងអាចដំណើរការ បង្ហាញ និងវិភាគរូបភាពផ្កាយរណបបានយ៉ាងងាយស្រួលដោយទាញយកប្រយោជន៍ និងម៉ូឌុលរបស់ Python ដូចជា rasterio, numpy និង matplotlib ។
អត្ថប្រយោជន៍ចម្បងមួយនៃការប្រើប្រាស់ Python សម្រាប់ការវិភាគរូបភាពផ្កាយរណប គឺជួរដ៏ធំទូលាយនៃម៉ូឌុលដំណើរការទិន្នន័យភូមិសាស្ត្រ។
ជាឧទាហរណ៍ Rasterio មានចំណុចប្រទាក់ដ៏សាមញ្ញមួយសម្រាប់អាន និងកែប្រែព័ត៌មាន raster ដែលធ្វើឱ្យវាស័ក្តិសមសម្រាប់ធ្វើការជាមួយឯកសាររូបភាពផ្កាយរណប។
ម៉ូឌុល numpy ផ្តល់នូវប្រតិបត្តិការអារេស្មុគ្រស្មាញសម្រាប់អនុវត្តការគណនារហ័ស និងស្ថិតិលើទិន្នន័យរូបភាព។ Matplotlib ក៏អនុញ្ញាតឱ្យយើងបង្កើតរូបភាពដែលពាក់ព័ន្ធ ដើម្បីជួយក្នុងការបកស្រាយ និងទំនាក់ទំនងនៃលទ្ធផលវិភាគ។
នៅក្នុងផ្នែកខាងក្រោម យើងនឹងពិនិត្យមើលឧទាហរណ៍ជាក់ស្តែង និងកំណាត់កូដ ដើម្បីបង្ហាញពីរបៀបដែល Python អាចត្រូវបានប្រើដើម្បីវិភាគរូបថតផ្កាយរណប។
យើងនឹងសិក្សាពីរបៀបបើករូបថតផ្កាយរណប មើលឃើញទិន្នន័យរូបភាព ទាញយកទិន្នន័យមេតា គណនាស្ថិតិក្រុម និងដំណើរការការវិភាគពិសេសៗដូចជា Normalized Difference Vegetation Index (NDVI) ជាដើម។
ឧទាហរណ៍ទាំងនេះនឹងជួយអ្នកឱ្យចាប់ផ្តើមនៅក្នុងប្រធានបទដ៏គួរឱ្យចាប់អារម្មណ៍នៃការវិភាគរូបភាពផ្កាយរណបជាមួយ Python ។
ជាដំបូង យើងត្រូវនាំចូលបណ្ណាល័យមួយចំនួន ដើម្បីជួយយើងក្នុងកិច្ចការរបស់យើង។
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. ការមើលឃើញ និងការបើករូបភាពផ្កាយរណប
យើងនឹងបណ្ណាល័យ Rasterio នៅក្នុងផ្នែកនេះដើម្បីចូលប្រើរូបភាពផ្កាយរណបដែលផ្តល់ដោយ satellite_image_path ។
ឯកសាររូបភាពត្រូវបានបើកដោយប្រើវិធីសាស្ត្រ rasterio.open() ហើយវត្ថុលទ្ធផលគឺ satellite_image តំណាងឱ្យរូបភាពដែលបានបើក។
សម្រាប់កិច្ចការនេះ ខ្ញុំបានប្រើរូបភាពពីតំណនេះ៖ https://unsplash.com/photos/JiuVoQd-ZLk ហើយរក្សាទុកវានៅលើកុំព្យូទ័ររបស់ខ្ញុំជា “satellite.jpg”។
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
បន្ទាប់ពីបើករូបភាព យើងអានវាជា array ដោយប្រើមុខងារ read() របស់ satellite_image object។ តម្លៃភីកសែលសម្រាប់ក្រុមនីមួយៗនៃរូបភាពផ្កាយរណបត្រូវបានរក្សាទុកក្នុងអារេរូបភាព។
# Read the image as an array
image_array = satellite_image.read()
ដើម្បីវាយតម្លៃរូបភាពផ្កាយរណបដោយមើលឃើញ យើងប្រើឧបករណ៍ matplotlib.pyplot ដើម្បីបង្កើតតួលេខ 10 × 10 អ៊ីញ។
អារេរូបភាពត្រូវបានបង្ហាញដោយប្រើវិធីសាស្ត្រ imshow() ។ ប្រតិបត្តិការ transpose(1, 2, 0) ត្រូវបានប្រើដើម្បីរៀបចំទំហំអារេរូបភាពឡើងវិញដើម្បីឱ្យសមនឹងលំដាប់ដែលរំពឹងទុកដោយ imshow()។
ទីបំផុត អ័ក្ស('បិទ') លាក់ស្លាកអ័ក្ស ដោយផ្តល់ទិដ្ឋភាពច្បាស់នៃរូបភាពផ្កាយរណប។
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. ការទាញយកទិន្នន័យមេតា
យើងទាញយកព័ត៌មានទិន្នន័យមេតាសំខាន់ៗអំពីរូបភាពផ្កាយរណប បន្ទាប់ពីបើក និងបង្ហាញវា។ ព័ត៌មាននេះជួយយើងក្នុងការយល់ដឹងអំពីគុណភាពនៃរូបភាព និងផ្តល់បរិបទសម្រាប់ការស៊ើបអង្កេតនាពេលអនាគត។
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)
ដោយប្រើគុណលក្ខណៈទទឹង និងកម្ពស់នៃវត្ថុ satellite_image យើងទាញយកទទឹង និងកម្ពស់រូបភាព។ លក្ខណសម្បត្តិ crs ត្រូវបានប្រើដើម្បីទាញយកប្រព័ន្ធយោងកូអរដោនេ (CRS) របស់រូបភាព។
CRS ផ្តល់ព័ត៌មានអំពីប្រព័ន្ធយោងតាមលំហរបស់រូបភាព ដែលអនុញ្ញាតឱ្យយើងផ្គូផ្គងកូអរដោនេរូបភាពទៅនឹងទីកន្លែងក្នុងពិភពពិត។
ជាចុងក្រោយ យើងប្រើគុណលក្ខណៈរាប់នៃវត្ថុ satellite_image ដើម្បីគណនាចំនួនក្រុមនៅក្នុងរូបភាព។ ទិន្នន័យនេះគឺមានសារៈសំខាន់សម្រាប់ការវិភាគនៅពេលក្រោយ ព្រោះវាអនុញ្ញាតឱ្យយើងទទួលបានតម្លៃភីកសែលសម្រាប់ក្រុមតន្រ្តីនីមួយៗនៅក្នុងអារេរូបភាព។
3. ការគណនាស្ថិតិក្រុមតន្រ្តី
យើងគណនាស្ថិតិសម្រាប់ក្រុមនីមួយៗនៅក្នុងអារេរូបភាពនៅក្នុងផ្នែកនេះ។ រង្វិលជុំធ្វើម្តងទៀតឆ្លងកាត់ក្រុមនីមួយៗ ហើយមុខងារ min, max, mean, និង std របស់បណ្ណាល័យ numpy ត្រូវបានប្រើដើម្បីគណនាស្ថិតិទាំងនេះ។
បញ្ជីវចនានុក្រមរក្សាទុកស្ថិតិសម្រាប់ក្រុមនីមួយៗ។
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)
រង្វិលជុំវិលជុំវិញក្រុមតន្រ្តីនីមួយៗ ដោយក្រុមតន្រ្តីអថេរតំណាងឱ្យសន្ទស្សន៍ក្រុមតន្រ្តី។ ដោយប្រើ image_array[band] យើងទាញយកតម្លៃភីកសែលពីអារេរូបភាពសម្រាប់ក្រុមតន្រ្តីនីមួយៗ។
បន្ទាប់មក សម្រាប់ក្រុមតន្រ្តីបច្ចុប្បន្ន អនុគមន៍ np.min(), np.max(), np.mean() និង np.std() ត្រូវបានប្រើដើម្បីកំណត់អប្បបរមា អតិបរមា មធ្យម និងគម្លាតស្តង់ដារនៃភីកសែល តម្លៃ។
ទិន្នន័យដែលបានគណនាសម្រាប់ក្រុមតន្រ្តីនីមួយៗត្រូវបានរក្សាទុកក្នុងវចនានុក្រមដែលមានគ្រាប់ចុចដូចជា 'Band' 'Min' 'Max' 'Mean' និង 'Std ។ វចនានុក្រមនីមួយៗត្រូវបានបន្ថែមទៅបញ្ជីនៃស្ថិតិក្រុម។ ទីបំផុតទិន្នន័យរបស់ក្រុមនីមួយៗត្រូវបានបោះពុម្ពទៅកុងសូល។
4. NDVI (Normalized Difference Vegetation Index) ការគណនា
NDVI គឺជាវិធានការដ៏ពេញនិយមមួយសម្រាប់វាស់សុខភាពរបស់រុក្ខជាតិ។ នៅក្នុងផ្នែកនេះ យើងពិនិត្យមើលថាតើរូបភាពរួមបញ្ចូលយ៉ាងហោចណាស់ XNUMX ក្រុម ដែលត្រូវបានទាមទារសម្រាប់ការគណនា 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.")
ដើម្បីចាប់ផ្តើម យើងកំណត់អថេរ red_band និង nir_band ទៅ គ្មាន។ បន្ទាប់មកអថេរ image_count ត្រូវបានប្រើដើម្បីកំណត់ថាតើរូបភាពមានយ៉ាងហោចណាស់បួនក្រុម។
បើដូច្នេះមែន យើងសន្និដ្ឋានថាក្រុមតន្រ្តីក្រហមគឺជាសន្ទស្សន៍ 2 ហើយក្រុមតន្រ្តីនៅជិតអ៊ីនហ្វ្រារ៉េដ (NIR) គឺសន្ទស្សន៍ទី 3 ។ ក្រុមតន្រ្តីដែលត្រូវគ្នាពីអារេរូបភាពត្រូវបានផ្តល់ទៅឱ្យអថេរ red_band និង nir_band ។
ប្រសិនបើទាំងក្រុមតន្រ្តីពណ៌ក្រហម និង NIR អាចចូលប្រើបាននោះ NDVI ត្រូវបានគណនាដោយប្រើរូបមន្ត (NIR – Red) / (NIR + Red) ។ លេខ NDVI ដែលលទ្ធផលបង្ហាញពីសន្ទស្សន៍បន្លែសម្រាប់ភីកសែលនីមួយៗក្នុងរូបភាព។
បន្ទាប់មកយើងឃើញ NDVI ដោយបង្កើតតួលេខថ្មី និងបង្ហាញអារេ NDVI ដោយប្រើ imshow()។ វិធីសាស្ត្រ colorbar() បន្ថែមរបារពណ៌ទៅគ្រោង ដោយផ្តល់តម្លៃ NDVI ជាឯកសារយោងដែលមើលឃើញ។
ដើម្បីផ្តោតទាំងស្រុងលើការបង្ហាញ NDVI យើងបញ្ជាក់បន្ថែមនូវចំណងជើងសម្រាប់គ្រោង ហើយដកស្លាកអ័ក្សចេញដោយអ័ក្ស('បិទ')។ ទីបំផុតគ្រោងត្រូវបានបង្ហាញជាមួយ plt.show() ។
សារកំហុសត្រូវបានសរសេរទៅកាន់កុងសូល ប្រសិនបើរូបភាពខ្វះក្រុមតន្រ្តីដែលត្រូវការសម្រាប់ការគណនា NDVI (ពោលគឺតិចជាងបួនក្រុម)។
5. ការនាំយករូបភាពផ្កាយរណបទៅជិត
វាគឺជាការអនុវត្តល្អបំផុតក្នុងការប្រើមុខងារ close() ដើម្បីបិទឯកសាររូបភាពផ្កាយរណប បន្ទាប់ពីធ្វើការវិភាគ និងការមើលរួច។ វារំដោះធនធានប្រព័ន្ធណាមួយដែលភ្ជាប់ទៅឯកសាររូបភាព។
satellite_image.close()
នេះជាដំណោះស្រាយរបស់ខ្ញុំ៖
តែប៉ុណ្ណឹង!
ចំណាំចុងក្រោយ
តួនាទីរបស់ Python ក្នុងការជួយដល់ការសិក្សានៃសំណុំទិន្នន័យដ៏ធំទាំងនេះ កាន់តែមានសារៈសំខាន់ នៅពេលដែលភាពអាចរកបាន និងការដោះស្រាយរូបភាពផ្កាយរណបកើនឡើង។
សមត្ថភាពក្នុងការប្រើប្រាស់ Python ដើម្បីចូលប្រើ ដំណើរការ វិភាគ និងបង្ហាញរូបភាពផ្កាយរណប ផ្តល់នូវផ្លូវសម្រាប់កម្មវិធីច្នៃប្រឌិត និងការយល់ដឹងដែលអាចជំរុញឱ្យមានការផ្លាស់ប្តូរដ៏ល្អ និងចំណេះដឹងកាន់តែច្រើនអំពីពិភពលោករបស់យើង។
សូមចងចាំថាដើម្បីស្វែងរកជម្រើសដ៏ធំនៃធនធាន ការបង្រៀន និងបណ្ណាល័យដែលមានដើម្បីបង្កើនចំណេះដឹង និងសមត្ថភាពរបស់អ្នក នៅពេលអ្នកបន្តដំណើរផ្សងព្រេងរបស់អ្នកក្នុងការវិភាគរូបភាពផ្កាយរណបដោយប្រើ Python ។
បន្តចាប់អារម្មណ៍ រុករក និងប្រើប្រាស់សមត្ថភាពរបស់ Python ដើម្បីស្វែងរកអាថ៌កំបាំងដែលកប់ក្នុងរូបភាពផ្កាយរណប។
សូមផ្ដល់យោបល់