مطالب تخصصی

چند نکته مهم در زمینه تکنیک های فرمول نویسی در نرم افزار ENVI

امیرحسین احراری
نوشته شده توسط Amirhossein.Ahrari@Gmail.com

اگر شما کاربر سنجش از دور هستید قطعا در کارهای خود با فرمول نویسی های مختلفی در نرم افزارها، خصوصا نرم افزار 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)

در معادله بالا ابتدا عبارت های داخل پرانتز محاسبه شده و سپس نسبت بین دو معادله محاسبه میشود.

اثر هریک از عملگرهای محاسباتی

بسیاری از کاربران هر روز انواع فرمول ها و معادلات رو بین باندها اجرا میکنند و به نتایج مشخصی میرسند. این در حالی است که کاربران سنجش از دور کمتر به اثر هریک از این عملگرها توجه دارند. این در حالی است که توجه کاربردی به عملکرد هریک از عملگرها امکان یادگیری بخش مهمی از پردازش ها اعم از فلسفه شاخص های طیفی را فراهم می آورد. در همین راستا قصد داریم تا در این بخش در ارتباط با عملکرد هریک از عملگرهای کاربردی در محاسبات بین باندی اشاره شود:

  • تفریق: برای بدست آوردن اختلاف بین دو باند از تفریق استفاده میشود. به عبارت دیگر برای بدست آوردن اختلاف بازتاب های ثبت شده در دوباند عملگر تفریق استفاده میشود. این عملگر برای آشکارسازی تغییرات بین دو باند حاصل از تاریخ های مختلف کاربردی است.
  • تقسیم: برای محاسبه نسبت اختلاف بین دوباند از این عملگر استفاده میشود. عملگر تقسیم نیز برای آشکارسازی تغییرات بین باندی نیز استفاده میشود اما از دقت بالاتری نسبت به تفریق برخوردار است. مهم ترین مزیت تفسیم در این رابطه آن است که اثر تعدیل کنندگی نسبت به تغییرات توپوگرافی و تغییرات زاویه تابش خورشید دارد.
  • جمع: به منظور ترکیب ویژگی های باندهای مختلف بکاربرده میشود.
  • ضرب: کم استفاده ترین عملگر محاسباتی در معادلات است. ضرب دو تصویر ماهواره ای خیلی کم انجام میشود اما بیشتر از این عملگر برای اعمال ماسک ها و همچنین اعمال اثر یک عدد واحد برای روی تمامی پیکسل ها، استفاده میشود.
مطالعه میکنم  آموزش جامع استفاده از Band math در نرم افزار ENVI

 

تعریف شروط در نرم افزار 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 است.

آیا میدانید چرا این شاخص با عنوان شاخص پوشش کیاهی نرمال سازی شده  فراخوانی میشود؟ پاسخ در شکل محاسباتی آن است. در صورتی که دو متغیر مانند باندهای مادون قرمز نزدیک و قرمز داشته باشید که از یکدیگر تفریق شده و سپس تقسیم بر حاصل جمع آن شود، نتیجه محاسبه شده بصورت نرمال سازی شده است.

مهم ترین ویژگی معادلات نرمال سازی آن است که بازه مقادیر نتیجه حاصله از این معادلات در بازه بین ۱- تا ۱+ است. در چنین مواردی تفسیر و تجلیل نتایج حاصله بسیار راحت و کاربردی انجام میشود.

مثال فرمول نویسی در نرم افزار ENVI

فرض کنید قصد دارید فرمولی بنویسید که در آن اعداد کوچکتر از صفر را معادل با صفر، بزرگتر از ده هزار را معادل با یک و هریک از اعداد بزرگتر از صفر و کوچکتر مساوی ده هزار را تقسیم بر عدد ده هزار کنید. در این راستا از چه ساختار فرمول نویسی در نرم افزار ENVI برای آن بکار خواهید برد؟

(b1 le 0) * 0 + (b1 gt 10000) * 1 + (b1 gt 0 and b1 le 10000) * float(b1 / 10000.0)

همانطور که در فرمول بالا نشان داده شده است:

  • عملگر AND برای انتخاب بازه ای از مقادیر استفاده شده.
  • برای انجام تقسیم بر ۱۰ هزار، از عدد ۱۰۰۰۰٫۰ به جای ۱۰۰۰۰ استفاده شده: مزیت این کار آن است که حتما نتایج حاصله از اجرای فرمول را بصورت اعشاری باز میگرداند.
  • عملگر ضرب برای اعمال معادل سازی استفاده شده چراکه پس از شروط آمده است.

عملگرهای کمترین و بیشترین در نرم افزار ENVI

گاهی اوفات ممکن است شما بخواهید برای مجموعه ای از تصاویری که از یک منطقه در اختیار دارید در هر پیکسل آن، بیشترین و کمترین مقدار ثبت شده را محاسبه کنید. برای این کار از عملگرهای بیشترین و کمترین استفاده میشود که اصطلاحا عنوان ماکزیموم و مینیموم نیز برای آن بکار برده شده است.

  • < : علامتی است که برای محاسبه ماکزیموم مقدار برای هر پیکسل استفاده میشود.
  • > : علامتی است که برای محاسبه مینیموم مقدار برای هریک پیکسل استفاده میشود.

نکته: عملگر ماکزیموم در Band Math امکان محاسبه شاخص Maximum Value Composite برای سری تصاویر ماهواره ای به منظور حذف ابر را فراهم می آورد.

مطالعه میکنم  حذف ابر در سنجش از دور با روش ترکیب تصاویر ماهواره ای
مطالعه میکنم  محاسبه سری زمانی NDVI ماهیانه ماهواره سنتینل ۲ (بدون ابر) بر اساس الگوریتم MVC در Google Earth Engine

روش محاسبه الگوریتم MVC در نرم افزار ENVI

برای محاسبه الگوریتم Maximum Value Composite در نرم افزار ENVI از ۷ تصویر، دستور زیر استفاده میشود:

b1>b2>b3>b4>b5>b6>b7

در صورتی که هم چنان ابهاماتی در ارتباط با روش های فرمول نویسی در نرم افزار ENVI دارید میتوانید سوال خود را در بخش نظرات این صفحه با ما در میان بزارید تا نسبت به پاسخ گویی آن اقدام شود.

مطالعه میکنم  آموزش جامع استفاده از Band math در نرم افزار ENVI
   

دیدگاهتان را بنویسید

تخفیف 25 درصدی همه محصولات به مناسبت نیمه شعبان - کد تخفیف: shaban25ورود به بخش محصولات دانلودی
+ +