چند نکته مهم در زمینه تکنیک های فرمول نویسی در نرم افزار ENVI -مقاله سنجش از دور
- امیرحسین احراری
- 66 دیدگاه
- [post-views]
اگر شما کاربر سنجش از دور هستید قطعا در کارهای خود با فرمول نویسی های مختلفی در نرم افزارها، خصوصا نرم افزار ENVI سروکار دارید. بسیاری از کاربران بدلیل مشکلاتی که فرمول نویسی دارند هرگز نمیتوانند به راحتی به نتایج مورد نظر خود دست یابند.
این در حالی است که با رعایت کردن چند نکته ساده بسیاری از نکات مبهم فرمول نویسی برای شما حل شده و بر سرعت پردازش های شما خواهد افزود. بر اساس سوالات و ابهاماتی که بسیاری از کاربران طی ماه های اخیر با ما در میان گذاشتند، در این مقاله قصد دارم تا مهم ترین نکات لازم برای نوشتن انواع فرمول های ساده تا پیچیده در نرم افزار انوی را با شما به اشتراک بزارم. این ها همگی نکاتی هستند که ما هر روزه برای آموزش های پردازش داده های ماهواره ای در نرم افزار انوی از آنها استفاده می کنیم.
روش های فرمول نویسی در نرم افزار ENVI
نرم افزار ENVI یکی از قدرتمندترین نرم افزارهای پردازش تصاویر ماهواره ای است که با استفاده از آن شما می توانید تمامی مراحل پردازش تصاویر ماهواره ای را بر روی انواع داده های ماهواره ای پیاده سازی کنید.
پردازش تصاویر ماهواره ای به صورت کلی از سه مرحله تشکیل شده است:
- پیش پردازش: به منظور حذف خطاها بر روی داده های ماهواره ای انجام می شود.
- پردازش: به منظور استخراج اطلاعات از تصاویر ماهواره ای انجام می شود.
- پس پردازش: به منظور اعتبارسنجی و مدل سازی نتایج پردازش تصاویر ماهواره ای استفاده می شود.
فرمول نویسی در نرم افزار ENVI با چه هدفی انجام میشود؟
فرمول نویسی عبارت است از محاسبات ریاضیاتی بین باندی تصاویر ماهواره ای که به منظور اهداف خاصی انجام می گردد:
- انجام تصحیحات رادیومتریکی
- محاسبه شاخص های طیفی
- پیاده سازی مدل های ریاضیاتی و فیزیکی بر روی تصاویر ماهواره ای
منطق فرمول نویسی در نرم افزار ENVI
نرم افزار انوی بر اساس زبان برنامه نویسی IDL طراحی و نوشته شده است. تمامی پردازش ها و مخاسبات بین باندی در این نرم افزار بر اساس استانداردهای تعریف شده در زبان IDL انجام میشود. در نرم افزار ENVI برای محاسبات بین باندی از دستور Band Math استفاده می شود. با استفاده از این دستور شما میتوانید انواع الگوریتم ها و محاسبات بین باندی را بر روی یک یا چند تصویر به صورت همزمان به انجام برسانید.
فرمول نویسی مدل فیزیکی الگوریتم سبال در نرم افزار ENVI
یک تصویر ماهواره ای در فرمول نویسی Band Math
در فرمول نویسی IDL، هریک تصویر ماهواره ای با استفاده از یک متغیر مانند b1 فراخوانی می شود. در صورتی که در فرمول مورد نظر شما، از بیش از یک باند استفاده شده است، متغیرهایی با نام های b2, b3 و غیره استفاده می شود.
نقش تابع FLOAT
شاید در بسیاری از نمونه های فرمول نویسی در نرم افزار ENVI مشاهده کردید که از تابع FLOAT در فراخوانی تصاویر ماهواره ای استفاده شده است. واقعا هدف استفاده از این تابع چیست؟ بسیاری از کاربران در این رابطه اطلاعات کافی ندارند و در هر معادله ای از این تابع استفاده می نمایند. در حفیفت در آن دسته از معادلاتی که تصاویر ورودی از مقادیر عدد صحیح تشکیل شده باشند مانند تصاویر درجه روشنایی، از علامت (float(b1 در فراخوانی تصویر برای نوشتن معادله استفاده می شود. اما در صورتی که تصویر یا تصاویر ورودی حاوی مقادیر اعشاری باشند، لزومی به استفاده از علامت float نیست.
اولویت های محاسباتی
بسیاری از کاربران در نوشتن معادلات در band math با مشکل مواجه هستند. به عنوان مثال بسیاری از افراد عقیده دارند که فرمول را به درستی نوشته اند اما نتیجه حاصله درست نیست؟ در این گونه از موارد عموما این افراد اولویت های محاسباتی را در نظر نگرفته اند. اولویت های محاسباتی در به معنای آن است که اول کدام عملگرها محاسبه می شوند؟ اولویت های محاسباتی بین باندی در نرم افزار ENVI به ترتیب زیر است:
- پرانتز: همیشه اول پارامترهای داخل پرانتز محاسبه می شوند.
- توان: پس از پرانتز، توان محاسبه می شود.
- تقسیم
- ضرب
- جمع و تفریق
به نمونه معادله زیر توجه کنید:
(b1-b2)/(b1+b2)
در معادله بالا ابتدا عبارت های داخل پرانتز محاسبه شده و سپس نسبت بین دو معادله محاسبه می شود.
اثر هریک از عملگرهای محاسباتی
بسیاری از کاربران هر روز انواع فرمول ها و معادلات رو بین باندها اجرا میکنند و به نتایج مشخصی میرسند. این در حالی است که کاربران سنجش از دور کمتر به اثر هریک از این عملگرها توجه دارند. این در حالی است که توجه کاربردی به عملکرد هریک از عملگرها امکان یادگیری بخش مهمی از پردازش ها اعم از فلسفه شاخص های طیفی را فراهم می آورد. در همین راستا قصد داریم تا در این بخش در ارتباط با عملکرد هریک از عملگرهای کاربردی در محاسبات بین باندی بپردازیم.
- تفریق: برای بدست آوردن اختلاف بین دو باند از تفریق استفاده می شود. به عبارت دیگر برای بدست آوردن اختلاف بازتاب های ثبت شده در دوباند عملگر تفریق استفاده می شود. این عملگر برای آشکارسازی تغییرات بین دو باند حاصل از تاریخ های مختلف کاربردی است.
- تقسیم: برای محاسبه نسبت اختلاف بین دوباند از این عملگر استفاده می شود. عملگر تقسیم نیز برای آشکارسازی تغییرات بین باندی نیز استفاده می شود اما از دقت بالاتری نسبت به تفریق برخوردار است. مهم ترین مزیت تفسیم در این رابطه آن است که اثر تعدیل کنندگی نسبت به تغییرات توپوگرافی و تغییرات زاویه تابش خورشید دارد.
- جمع: به منظور ترکیب ویژگی های باندهای مختلف بکاربرده می شود.
- ضرب: کم استفاده ترین عملگر محاسباتی در معادلات است. ضرب دو تصویر ماهواره ای خیلی کم انجام می شود اما بیشتر از این عملگر برای اعمال ماسک ها و همچنین اعمال اثر یک عدد واحد برای روی تمامی پیکسل ها، استفاده می شود.
تعریف شروط در نرم افزار ENVI
به منظور تعریف شروط در نرم افزار ENVI از عملگرهای منطقی زیر استفاده می شود:
- GT : به معنای Greater Than یا بزرگتر از.
- LT : به معنای Less Than یا کوچکتر از.
- EQ : به معنای Equal یا برابر.
- GE : به معنای Greater Equal یا بزرگتر مساوی.
- LE : به معنای Less Equal یا کوچکتر مساوی.
مثال: فرض کنید یک تصویر NDVI دارید که میخواهید مقادیر کوچکتر از صفر آن را معادل با صفر قرار دهید. برای این منظور در band math دستور مورد نظر را به چه صورتی مینویسید؟ برای پاسخ این سوال به معادله زیر توجه کنید:
(b1 lt 0) * 0 + (b1 ge 0) * b1
همانطور که در معادله بالا مشاهده می کنید، تصویر NDVI با عنوان متغیری به نام b1 در معادله معرفی شده و ابتدا مقادیر کوچکتر از صفر در عدد صفر ضرب شده است و سپس اعداد بزرگتر مساوی صفر در تصویر اولیه ضرب شده اند. توجه داشته باشید که درصورتی که پس از اعمال شرط (مانند مثال بالا) از عملگر ضرب استفاده شود، به معنای معادل سازی است. به عنوان مثال در نمونه بالا مفادیر بزرگتر مساوی صفر در تصویر NDVI ضرب نشده بلکه عملا معادل با همان مقادیری شده که در تصویر NDVI وجود داشته است.
نقش عملگرهای AND و OR در نرم افزار ENVI
یکی از مشکلات مهمی که بسیاری از کاربران در انجام فرمول نویسی در نرم افزار ENVI با آن مشکل دارند آن است که دقیقا نمیدانند نقش هریک از این عملگرهای منطقی در پردازش تصاویر ماهواره ای چیست؟
- عملگر AND: تعیین کننده اشتراک بین باندی است: به عبارت دیگر هر وقت فصد داشتید تا اشتراک بین دوباند را حساب کنید، استفاده از این عملگر برای شما کاربردی است.
- عملگر OR: تعیین کننده اجتماع بین باندی است: به عبارت دیگر هروفت قصد داشتید تا اجتماع بین دوباند را حساب کنید، استفاده از این عملگر برای شما کاربردی است.
نکته: عملگرهای AND و OR بیشتر در طبقه بندی درختی بین چند باند در نرم افزار ENVI کاربردی است با وجود آنکه برای فرمول نویسی نیز استفاده می شود.
منظور از معادلات نرمال سازی چیست؟
قطعا شما نام شاخص NDVI را شنیده اید که معادل عبارت Normalized Difference Vegetation Index است. آیا می دانید چرا این شاخص با عنوان شاخص پوشش کیاهی نرمال سازی شده فراخوانی میشود؟ پاسخ در شکل محاسباتی آن است. در صورتی که دو متغیر مانند باندهای مادون قرمز نزدیک و قرمز داشته باشید که از یکدیگر تفریق شده و سپس تقسیم بر حاصل جمع آن شود، نتیجه محاسبه شده بصورت نرمال سازی شده است. مهم ترین ویژگی معادلات نرمال سازی آن است که بازه مقادیر نتیجه حاصله از این معادلات در بازه بین 1- تا 1+ است. در چنین مواردی تفسیر و تجلیل نتایج حاصله بسیار راحت و کاربردی انجام می شود.
مثال فرمول نویسی در نرم افزار ENVI
فرض کنید قصد دارید فرمولی بنویسید که در آن اعداد کوچکتر از صفر را معادل با صفر، بزرگتر از ده هزار را معادل با یک و هریک از اعداد بزرگتر از صفر و کوچکتر مساوی ده هزار را تقسیم بر عدد ده هزار کنید. در این راستا از چه ساختار فرمول نویسی در نرم افزار ENVI برای آن بکار خواهید برد؟
(b1 le 0) * 0 + (b1 gt 10000) * 1 + (b1 gt 0 and b1 le 10000) * float(b1 / 10000.0)
همانطور که در فرمول بالا نشان داده شده است:
- عملگر AND برای انتخاب بازه ای از مقادیر استفاده شده.
- برای انجام تقسیم بر 10 هزار، از عدد 10000٫0 به جای 10000 استفاده شده: مزیت این کار آن است که حتما نتایج حاصله از اجرای فرمول را بصورت اعشاری باز میگرداند.
- عملگر ضرب برای اعمال معادل سازی استفاده شده چراکه پس از شروط آمده است.
عملگرهای کمترین و بیشترین در نرم افزار ENVI
گاهی اوفات ممکن است شما بخواهید برای مجموعه ای از تصاویری که از یک منطقه در اختیار دارید در هر پیکسل آن، بیشترین و کمترین مقدار ثبت شده را محاسبه کنید. برای این کار از عملگرهای بیشترین و کمترین استفاده میشود که اصطلاحا عنوان ماکزیموم و مینیموم نیز برای آن بکار برده شده است.
- < : علامتی است که برای محاسبه ماکزیموم مقدار برای هر پیکسل استفاده میشود.
- > : علامتی است که برای محاسبه مینیموم مقدار برای هریک پیکسل استفاده میشود.
نکته: عملگر ماکزیموم در Band Math امکان محاسبه شاخص Maximum Value Composite برای سری تصاویر ماهواره ای به منظور حذف ابر را فراهم می آورد.
[irp posts=”29408″ name=”حذف ابر در سنجش از دور با روش ترکیب تصاویر ماهواره ای”]
[irp posts=”42028″ name=”محاسبه سری زمانی NDVI ماهیانه ماهواره سنتینل 2 (بدون ابر) بر اساس الگوریتم MVC در Google Earth Engine”]
روش محاسبه الگوریتم MVC در نرم افزار ENVI
برای محاسبه الگوریتم Maximum Value Composite در نرم افزار ENVI از 7 تصویر، دستور زیر استفاده میشود:
b1>b2>b3>b4>b5>b6>b7
در صورتی که هم چنان ابهاماتی در ارتباط با روش های فرمول نویسی در نرم افزار ENVI دارید میتوانید سوال خود را در بخش نظرات این صفحه با ما در میان بزارید تا نسبت به پاسخ گویی آن اقدام شود. همچنین می توانید از دوره آموزش نرم افزار envi سایت آکادمی بازدید کنید.

آموزش رایگان نرم افزار ENVI
در ENVI حرفه ای شو!

۰ تا ۱۰۰ مفاهیم سنجش از دور
کاملا رایگان شروع کن!

آموزش رایگان ArcGIS pro
واقعاااااا رایگاااااانه !!

آموزش گوگل ارث انجین
شدیدا توصیه شده !

دانلود لندیوز ۱۰ متری ایران و …
به کمک گوگل ارث اینجین!

کتاب موتور پردازش مجازی
اولین کتاب آموزش گوگل ارث انجین!

طبقه بندی تصاویر ماهواره ای
آشنایی با انواع روش ها!

پیش پردازش تصاویر ماهواره ای
هندسی – رادیومتریکی – اتمسفری

دانلود داده های آلتیمتری
ترازسنجی برای دریاچه ها

پوشش اراضی ۱۰ متری
ترازسنجی برای دریاچه ها

کار با داده های رطوبت و شوری
ماهواره SMOS

مکان یابی به روش بولین
در یک ساعت

نمایش سه بعدی در ArcGIS
مدل رقومی ارتفاع
مقالات پیشنهادی
نظراتـــــــــ
آخرین مقالات

زبانهای برنامهنویسی پر استفاده در GIS و RS کدامند؟
امروزه، سیستمهای اطلاعات مکانی (GIS) به سمتی گرایش پیداکردهاند تا بتوانند علاوه بر تولید و طراحی نقشه، با مدلها و

آموزش دانلود دادههای OSM در QGIS (استخراج مرز سیاسی استان ها و شهرها)
یکی از ساده ترین روش های دانلود داده های اوپن استریت مپ (Openstreetmap) استفاده از پلاگین تخصصی QGIS است و

زیباسازی نقشه ها با سیمبولوژی در QGIS
این ویدئو به آموزش مفهوم و نحوه اجرای سیمبولوژی (Symbology) یا همان استایلدهی به نقشهها در نرمافزار QGIS میپردازیم.

روش های ورود داده های وکتوری و رستری به محیط QGIS
در این آموزش روش های ورود داده های وکتور و رستر را بررسی کردم. به صورت کلی دو روش برای





66 نظر در “چند نکته مهم در زمینه تکنیک های فرمول نویسی در نرم افزار ENVI -مقاله سنجش از دور”
با سلام
مقادیر DN تصویر من بین منفی462 تا مثبت 755 است. چطور میتوانم این مقادیر را در محدوده 0 تا 255 قرار دهم؟ چه فرمولی باید برای آن بنویسم؟ .ممنون میشم راهنمایی کنید.
با سلام و احترام
متاسفانه در این زمینه فرمول آن را نمیدانم.
موفق باشید
سلام وقت بخیر
برای پیاده سازی الگوریتم سبال آموزشتون تهیه کردم. ولی در دریاچه از اون استفاده می کنم. برای محاسبه emissivity دو شرط
for LAI=0
emissivity=0.98
و
for water
NDVI<0 and alpha<=0.47
emissivity=0.985
را چطور باید پیاده سازی کنم؟
از فرمول
(b1 lt 3.0)*(0.95+0.01*b1)+(b1 ge 3.0)*0.98+(b2 lt 0 and b3 lt 0.47)*0.985
استفاده کردم. ولی چون بعضی از پیکسل ها هم در شرط اول (LAI) و هم در شرط دوم (NDVI و alpha) صدق می کنند، مقادیر دو قست را جمع کرده و emissivity بیشتر از 1 می شود.
با سلام و احترام
الگوریتم سبال فقط برای زمین های کشاورزی است و برای پهنه های آبی کاربرد ندارد. ضمن اینکه سبال تبخیر و تعرق رو اندازه گیری میکنه اما در آب صرفا تبخیر رخ میدهد.
روش محاسبه این فرمول ها رو محصول توضیح داده ام بصورت کامل.آیا مشاهده کردید؟
موفق باشید
با سلام
با چه فرمولی می توان مقدار هر پیکسل را با مقادیر پیکسلهای اطرافش جمع کنیم؟
با سلام و احترام
متاسفانه این مورد را نمیدانم و اطلاعات کافی در این زمینه ندارم.
موفق باشید
سلام در تصاویر مادیس ndvi را محاسبه کردم و برخی از مقادیر بدون دیتا(nan) شدن در صورتی که بخوام این مقادیر معادل کوچکتر از صفر یا خود صفر بشوند چکار می تونم بکنم؟؟
با سلام و احترام
راستش من روش فرمول نویسی داده های nan در انوی را نمیدانم. چون داده های nan عملا یک مقدار ریاضیاتی نیست. به همین دلیل بهتر است در گوگل در ارتباط با این مشکل جستجو کنید.
موفق باشید
با سلام. برای نرمال سازی مقادیر بیشتر از 1 و کمتر از صفر به مقادیر بین صفر و یک در صورتی که مقادیر بین صفر و یک ثابت بمانند از چه فرمولی باید استفاده کرد؟ با تشکر
با سلام و احترام
برای چه داده ای و در چه مرحله ای میخواهید نرمال سازی رو انجام دهید.
موفق باشید
لندست 8 و پس از تصحیح اتمسفری FLAASH
بهتر است نرمال سازی در این مرحله انجام نشه. تنها تصویر بازتاب سطحی بدست آمده را در عدد ۰/۰۰۰۱ ضرب کنید کافی هست.
موفق باشید
float((bl le 1000)*0+(b1 ge 10000)*1+(b1 gt 1000 and b1 lt 10000)*float(b1)/10000.0))
سلام امید وارم صحت مند باشيد من این فورمول را وارد می کنم در نرم افزار ENVI اما قبول نمی کند
با سلام و احترام
یکی از b1 ها به اشتباه بصورت bl نوشته شده.
موفق باشید