@@ -57,7 +57,7 @@ function discriminate_ice_water(
5757 clouds_channel = IceFloeTracker. create_clouds_channel (
5858 cloudmask_bitmatrix, reflectance_image
5959 )
60- reflectance_image_band7 = channelview (reflectance_image)[1 , :, :]
60+ reflectance_image_band7 = @view ( channelview (reflectance_image)[1 , :, :])
6161 image_sharpened_gray = IceFloeTracker. imsharpen_gray (
6262 image_sharpened, landmask_bitmatrix
6363 )
@@ -76,12 +76,12 @@ function discriminate_ice_water(
7676 image_floes = IceFloeTracker. apply_landmask (reflectance_image, landmask_bitmatrix) # source reflectance, landmasked
7777 image_floes_view = channelview (image_floes)
7878
79- floes_band_2 = image_floes_view[2 , :, :]
80- floes_band_1 = image_floes_view[3 , :, :]
79+ floes_band_2 = @view ( image_floes_view[2 , :, :])
80+ floes_band_1 = @view ( image_floes_view[3 , :, :])
8181
8282 # keep pixels greater than intensity 100 in bands 2 and 1
83- floes_band_2_keep = floes_band_2[floes_band_2 .> floes_threshold]
84- floes_band_1_keep = floes_band_1[floes_band_1 .> floes_threshold]
83+ floes_band_2_keep = floes_band_2[floes_band_2.> floes_threshold]
84+ floes_band_1_keep = floes_band_1[floes_band_1.> floes_threshold]
8585
8686 _, floes_bin_counts = ImageContrastAdjustment. build_histogram (floes_band_2_keep, nbins)
8787 _, vals = Peaks. findmaxima (floes_bin_counts)
@@ -129,15 +129,21 @@ function discriminate_ice_water(
129129
130130 normalized_image_copy = copy (normalized_image)
131131 normalized_image_copy[normalized_image_copy.> THRESH] .= 0
132- normalized_filtered = normalized_image - (normalized_image_copy * 3 )
132+ @. normalized_image_copy = normalized_image - (normalized_image_copy * 3 )
133133
134- mask_image_clouds = (
135- image_clouds .< mask_clouds_lower .|| image_clouds .> mask_clouds_upper
134+ # reusing memory allocated in landmask_bitmatrix
135+ # used to be mask_image_clouds
136+ @. landmask_bitmatrix = (
137+ image_clouds < mask_clouds_lower || image_clouds > mask_clouds_upper
136138 )
137- band7_masked = image_cloudless .* .! mask_image_clouds
138- ice_water_discriminated_image = clamp01nan .(normalized_filtered - (band7_masked * 3 ))
139139
140- return ice_water_discriminated_image
140+ # reusing image_cloudless - used to be band7_masked
141+ @. image_cloudless = image_cloudless * ! landmask_bitmatrix
142+
143+ # reusing normalized_image_copy - used to be ice_water_discriminated_image
144+ @. normalized_image_copy = clamp01nan (normalized_image_copy - (image_cloudless * 3 ))
145+
146+ return normalized_image_copy
141147end
142148
143149function _check_threshold_50 (
0 commit comments