יותר

הסרת ענן מנתוני Landsat


אני מנסה להסיר עננים מנתוני Landsat 5,7 ו- 8. אני גם מנסה לעשות זאת באמצעות אפשרויות קוד פתוח בלבד, תוך הימנעות מ- ArcGIS. אני מכיר את הפיתון ויש לי ניסיון QGIS. במקור, ניסיתי להשתמש במודל הסיווג האוטומטי ב- QGIS, אך הוא נותן לי הרבה בעיות ולא תמיד מפיק סיווגים בפועל (לעתים קרובות הוא מחזיר ריבוע בעל ערך אחיד ...). האם מישהו יכול לכוון אותי לכיוון של אפשרות טובה יותר?


אני יכול להציע להסתכל ב מסכה מאת ג'ה ג'ו

חסרון:

  • לא פייתון ולא QGIS

יתרונות:

  • זמין כ- matlab או הפעלה C
  • ביצועים נהדרים בזיהוי עננים כמו גם צללי ענן
  • שימוש פשוט

אני ממליץ בחום לנסות. ניתן להשיג את ההפעלה מהקישורים ועד כה הצוות שלנו לא מצא מוצר מעולה המופץ ללא עלות.


הצלחתי לזהות פיקסלים בענן בסצינות Landsat 8 באמצעות הקוד הבא. הכנסתי למטה מעט פיתון / פסאודו שיחזיר פיקסלים בענן אפשריים. זהו המעבר הראשון לזיהוי שכבת הענן הפוטנציאלית שנלקחה ממאמר זה על ידי ג'ו וודקוק (2014).

העיתון מפרט גם מעבר שני שמעדן עוד יותר את התוצאה על ידי פיקסלים בענן שאינם מזוהים. כדאי שתסתכל גם על זה. השיטה פותחה עבור Landsat 7 ולכן היא אמורה לעבוד בכל מקרי Landsat.

def calc_ndsi (): green = get_green_band () swir = get_swir_band () return (green - swir) / (green + swir) def calc_ndvi (): nir = get_nir_band () red = get_red_band () return (nir - red) / ( nir + red) def calc_basic_test (): band_7_test = get_band_seven () temp_test = כאשר temp הוא פחות מ 27 מעלות C ndsi_test = איפה calc_ndsi <0.8 ndvi_test = איפה calc_ndvi <0.8 basic_test = np.logical_and.reduce ((band_7_test, temp_t , ndvi_test)) להחזיר basic_test def calc_whiteness (): כחול = קבל כחול ירוק = קבל ירוק אדום = קבל אדום ממוצע_וויז = (כחול + ירוק + אדום) / 3 לובן = (np.abs ((כחול - ממוצע_וויז) / ממוצע_וויס) + np.abs ((ירוק - mean_vis) / mean_vis) + np.abs ((אדום - mean_vis) / mean_vis)) לובן [np.where (לובן> 1)] = 1 לובן חוזר def calc_whiteness_test (): לובן_בדיקה = איפה calc_liteness () <0.7 החזר לובן_טסט def מחשב_hot_test (): band = 'rtoa_' כחול = קבל כחול אדום = קבל אדום hot_test = (כחול - 0.5 * אדום - 0.08)> 0 החזר hot_test def swirnir_test (): nir = קבל NIR sw ir = קבל החזרת SWIR (nir / swir)> 0.75 def calc_pcp (): החזר np.logical_and.reduce ((calc_basic_test (), calc_whiteness_test (), calc_hot_test (), swirnir_test ()))

לכן,calc_pcp ()יזהה את הפיקסלים הענניים הפוטנציאליים בתמונה שלך.

שים לב ששיטה זו משתמשת בפסים TIRS (כדי להשיג את הטמפרטורה) ב- Landsat 8 אשר כרגע אינם פועלים. בנוסף, שיטה זו משתמשת בנתונים שכבר עברו תיקון אטמוספרי.

זיהוי עננים בתמונות חישה מרחוק הוא יותר מבעיה בעיבוד צבע, אם כי חישוב 'לובן' הענן נכלל במבחן.

כדאי להשוות את התוצאות שתקבל עם הלהקה של הערכת איכות לנדס 8.


אתה יכול לנסות פתרון זה:

כתב ויתור

מעולם לא הסרתי בעבר נתוני ענן.

דעה:

זה נראה כמו בעיה בעיבוד צבעים: עננים הם צבע לבן-אפור. כל עוד אין לך שלג או עצמים לבנים גדולים אחרים במישור הקרקע שלך, תוכל לחפש את כל הפיקסלים התואמים לקריטריונים של צבעים מלאים בצבע אדום מלא וירוק מלא וכחול מלא. כיצד לעשות זאת ... נסה את הפתרון שפורסם לעיל.


התבונן בדף זה http://gistack.rozblog.com/post/32/qa_cloudmask_ports.html בתחתית העמוד הזה אתה יכול להוריד מודל של erdas לדמיין שהוא לוקח את הלהקה QA של landsat8 ולהחליף ערכי פיקסל ענן ב 0


צפו בסרטון: Anatomy of Landsat 8 (אוֹקְטוֹבֶּר 2021).