File: cgtasseledcapcoeffs.pro

package info (click to toggle)
coyote 2019.01.29-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 6,316 kB
  • sloc: python: 184; makefile: 14; sh: 13
file content (198 lines) | stat: -rw-r--r-- 11,895 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
; docformat = 'rst'
;
; NAME:
;   cgTasseledCapCoeffs
;
; PURPOSE:
; 
;  This function returns tasseled cap coefficients from various sources to perform
;  the tasseled cap transformation on appropriate (e.g. LandSat) images.
;******************************************************************************************;
;                                                                                          ;
;  Copyright (c) 2012, by Fanning Software Consulting, Inc. All rights reserved.           ;
;                                                                                          ;
;  Redistribution and use in source and binary forms, with or without                      ;
;  modification, are permitted provided that the following conditions are met:             ;
;                                                                                          ;
;      * Redistributions of source code must retain the above copyright                    ;
;        notice, this list of conditions and the following disclaimer.                     ;
;      * Redistributions in binary form must reproduce the above copyright                 ;
;        notice, this list of conditions and the following disclaimer in the               ;
;        documentation and/or other materials provided with the distribution.              ;
;      * Neither the name of Fanning Software Consulting, Inc. nor the names of its        ;
;        contributors may be used to endorse or promote products derived from this         ;
;        software without specific prior written permission.                               ;
;                                                                                          ;
;  THIS SOFTWARE IS PROVIDED BY FANNING SOFTWARE CONSULTING, INC. ''AS IS'' AND ANY        ;
;  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES    ;
;  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT     ;
;  SHALL FANNING SOFTWARE CONSULTING, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,             ;
;  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED    ;
;  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;         ;
;  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND             ;
;  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT              ;
;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS           ;
;  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                            ;
;******************************************************************************************;
;
;+
; This function returns tasseled cap coefficients from various sources to perform
; the tasseled cap transformation on appropriate (e.g. LandSat) images. The program
; requires that one of the keywords be set.
;
; :Categories:
;    Utility
;    
; :Keywords:
;     envi: in, optional, type=boolean
;       Set this keyword to return the tasseled cap coeficients used by ENVI 4.8.
;       These are reported (by ITTVIS) to be for LandSat-5 TM data, although others
;       report these are in error for TM-5 data and really apply to TM-4 data.
;       Reference: http://www.exelisvis.com/language/en-US/UserCommunity/UserForums/forumid/29/threadid/12985/scope/posts.aspx.
;     etm: in, optional, type=boolean
;       Set this keyword to return the tasseled cap coeficients proposed by the USGS for
;       LandSat-7 ETM+ images. Note that these values should be applied to reflectances.
;       Reference: http://landcover.usgs.gov/pdf/tasseled.pdf.
;     imagine: in, optional, type=boolean
;       Set this keyword to return the tasseled cap coeficients used by the ERDAS Imagine software
;       for LandSat-5 data.
;     ls4: in, optional, type=boolean
;       Set this keyword to return the tasseled cap coeficients reported by Crist, Laurin and Cicone
;       for LandSat-4 imagery. Reference: http://www.ciesin.org/docs/005-419/005-419.html.
;     ls5: in, optional, type=boolean
;       Set this keyword to return the tasseled cap coeficients reported by Crist, Laurin and Cicone
;       for LandSat-5 imagery. Reference: http://www.ciesin.org/docs/005-419/005-419.html.
;     mss: in, optional, type=boolean
;       Set this keyword to return the tasseled cap coeficients originally reported by R.J Kauth and G.S. Thomas
;       for MSS LandSat imagery. Reference: http://web.pdx.edu/~jduh/courses/Archive/geog481w07/Students/Marcello_TasselledCap.pdf.
;       Also: http://www.sjsu.edu/faculty/watkins/tassel.htm.
;     quickbird: in, optional, type=boolean
;       Set this keyword to return the tasseled cap Graham-Schmidt coeficients reportedly used for Quickbird imagery.
;       Reference: http://www.asprs.org/a/publications/proceedings/pecora16/Yarbrough_L.pdf
;     tm: in, optional, type=boolean
;       Set this keyword to return the tasseled cap coeficients originally proposed for TM imagery by Kauth and Thomas.
;       Reference: http://web.pdx.edu/~jduh/courses/Archive/geog481w07/Students/Marcello_TasselledCap.pdf.
;       Also: http://www.sjsu.edu/faculty/watkins/tassel.htm.
;
; :Examples:
;    tasseledCapTransformedImage = landsat_tm_image ## cgTasselecCapCoeffs(/TM)
;
; :Author:
;    FANNING SOFTWARE CONSULTING::
;       David W. Fanning 
;       1645 Sheely Drive
;       Fort Collins, CO 80526 USA
;       Phone: 970-221-0438
;       E-mail: david@idlcoyote.com
;       Coyote's Guide to IDL Programming: http://www.idlcoyote.com
;
; :History:
;     Written, 24 August 2012, by David W. Fanning.
;
; :Copyright:
;     Copyright (c) 2012, Fanning Software Consulting, Inc.
;-
FUNCTION cgTasseledCapCoeffs, $
   ENVI=envi_tm5, $
   ETM=etm_landsat, $
   IMAGINE=mss_imagine, $
   LS4=landsat_4, $
   LS5=landsat_5, $
   MSS=mss_landsat, $
   QUICKBIRD=quickbird, $
   TM=tm_landsat
   
   On_Error, 2 ; Return to caller.

    CASE 1 OF
    
        Keyword_Set(landsat_4): BEGIN
        ; Coefficients from: http://www.ciesin.org/docs/005-419/tab1.gif.
        ; http://www.ciesin.org/docs/005-419/005-419.html. TM-4 Apply to DN values.
        coefficients = FltArr(6,3)
        ;                     Band1     Band2    Band3   Band4    Band5    Band7
        coefficients[*,0] = [ 0.3037,  0.2793,  0.4743, 0.5585,  0.5082,  0.1863] ; Brightness
        coefficients[*,1] = [-0.2848, -0.2435, -0.5436, 0.7243,  0.0840, -0.1800] ; Greenness
        coefficients[*,2] = [ 0.1509,  0.1973,  0.3279, 0.3406, -0.7112, -0.4572] ; Yellowness
        END
        
        Keyword_Set(landsat_5): BEGIN
        ; Coefficients from: http://www.ciesin.org/docs/005-419/tab2.gif.
        ; http://www.ciesin.org/docs/005-419/005-419.html. TM-5 Apply to DN values.
        coefficients = FltArr(6,3)
        ;                     Band1     Band2    Band3   Band4    Band5    Band7
        coefficients[*,0] = [ 0.2909,  0.2493,  0.4806, 0.5568,  0.4438,  0.1706] ; Brightness + 10.3695 additive term
        coefficients[*,1] = [-0.2728, -0.2174, -0.5508, 0.7221,  0.0733, -0.1648] ; Greenness  + -0.7310 additive term
        coefficients[*,2] = [ 0.1446,  0.1761,  0.3322, 0.3396, -0.6210, -0.4186] ; Yellowness + -3.3828 additive term
        END

        Keyword_Set(envi_tm5): BEGIN
        ; Coefficients from: http://www.exelisvis.com/language/en-US/UserCommunity/UserForums/forumid/29/threadid/12985/scope/posts.aspx.
        ; TM-5 (although someone claims these are TM-4 values!). Apply to DN values.
        coefficients = FltArr(6,3)
        ;                     Band1     Band2      Band3     Band4     Band5     Band7
        coefficients[*,0] = [ 0.33183,  0.33121,  0.55177,  0.42514,  0.48087,  0.25252] ; Brightness
        coefficients[*,1] = [-0.24717, -0.16263, -0.40639,  0.85469,  0.05493, -0.11749] ; Greenness
        coefficients[*,2] = [ 0.13929,  0.22490,  0.40359,  0.25178, -0.70133, -0.45732] ; Yellowness
        END

        Keyword_Set(mss_landsat): BEGIN
        ; Coefficients from: http://web.pdx.edu/~jduh/courses/Archive/geog481w07/Students/Marcello_TasselledCap.pdf.
        ; These are from R.J Kauth and G.S. Thomas original 1976 article: http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1160&context=lars_symp&sei-redir=1&referer=http%3A%2F%2Fscholar.google.com%2Fscholar_url%3Fhl%3Den%26q%3Dhttp%3A%2F%2Fdocs.lib.purdue.edu%2Fcgi%2Fviewcontent.cgi%253Farticle%253D1160%2526context%253Dlars_symp%26sa%3DX%26scisig%3DAAGBfm3MWqyNxnJ7UYudI9atplMsxTPgzw%26oi%3Dscholarr#search=%22http%3A%2F%2Fdocs.lib.purdue.edu%2Fcgi%2Fviewcontent.cgi%3Farticle%3D1160%26context%3Dlars_symp%22
        coefficients = FltArr(4,4)
        ;                     Band1     Band2    Band3    Band4
        coefficients[*,0] = [ 0.4330,  0.6320,  0.5860,  0.2640] ; Brightness
        coefficients[*,1] = [-0.2900, -0.5620,  0.6000,  0.4910] ; Greenness
        coefficients[*,2] = [-0.8290,  0.5220, -0.0390,  0.1940] ; Yellowness
        coefficients[*,3] = [ 0.2230,  0.0120, -0.5430,  0.8100] ; Yellowness
        END
        
        Keyword_Set(mss_imagine): BEGIN
        ; Coefficients from ERDAS Imagine software
        coefficients = FltArr(4,3)
        ;                     Band1   Band2   Band3   Band4
        coefficients[*,0] = [ 0.332,  0.603,  0.675,  0.262] ; Brightness
        coefficients[*,1] = [-0.283, -0.660,  0.577,  0.388] ; Greenness
        coefficients[*,2] = [-0.899,  0.428,  0.076, -0.041] ; Yellowness
        END

        Keyword_Set(quickbird): BEGIN
        ; Gram-Schmidt coefficients from: http://www.asprs.org/a/publications/proceedings/pecora16/Yarbrough_L.pdf
        coefficients = FltArr(4,3)
        ;                     Band1   Band2   Band3   Band4
        coefficients[*,0] = [ 0.319,  0.543,  0.490,  0.604] ; Brightness
        coefficients[*,1] = [-0.121, -0.331, -0.517,  0.780] ; Greenness
        coefficients[*,2] = [ 0.652,  0.375, -0.639, -0.163] ; Yellowness
        END
        
        Keyword_Set(TM_landsat): BEGIN
        ; Coefficients from: http://web.pdx.edu/~jduh/courses/Archive/geog481w07/Students/Marcello_TasselledCap.pdf.
        ; Should be applied to reflectance values only? Of the same order as ENVI TM-5.
        coefficients = FltArr(6,3)
        ;                     Band1     Band2    Band3    Band4   Band5   Band7
        coefficients[*,0] = [ 0.3037,  0.2793,  0.4343, 0.5585,  0.5082,  0.1863] ; Brightness
        coefficients[*,1] = [-0.2848, -0.2435, -0.5436, 0.7243,  0.0840, -0.1800] ; Greenness
        coefficients[*,2] = [ 0.1509,  0.1793,  0.3299, 0.3406, -0.7112, -0.4572] ; Yellowness
        END
        
        Keyword_Set(etm_landsat): BEGIN
        ; Coefficients from: http://landcover.usgs.gov/pdf/tasseled.pdf.
        coefficients = FltArr(6,6)
        ;                     Band1     Band2    Band3    Band4    Band5    Band7
        coefficients[*,0] = [ 0.3561,  0.3972,  0.3904,  0.6966,  0.2286,  0.1596] ; Brightness
        coefficients[*,1] = [-0.3344, -0.3544, -0.4556,  0.6966, -0.0242, -0.2630] ; Greenness
        coefficients[*,2] = [ 0.2626,  0.2141,  0.0926,  0.0656, -0.7629, -0.5388] ; Yellowness
        coefficients[*,3] = [ 0.0805, -0.0498,  0.1950, -0.1327,  0.5752, -0.7775] ; Fourth
        coefficients[*,4] = [-0.7252, -0.0202,  0.6683,  0.0631, -0.1494, -0.0274] ; Fifth
        coefficients[*,5] = [ 0.4000, -0.8172,  0.3832,  0.0602, -0.1095,  0.0985] ; Sixth
        END
        
        ELSE: Message, 'Must set a keyword to specify type of Tasseled Cap coefficients required.'
        
    ENDCASE
    
    ; Transpose the coefficient matrix so that you can apply image ## coefficients to get tasseled cap transformations.
    ; Note that image bands must be in columns, with band number in rows in the "image" variable.
    RETURN, Transpose(coefficients)
    
END