diff --git a/01-0001-cropped-transformed-ratio.png b/01-0001-cropped-transformed-ratio.png index e8a6214..bfa999a 100644 Binary files a/01-0001-cropped-transformed-ratio.png and b/01-0001-cropped-transformed-ratio.png differ diff --git a/01-0002-cropped-transformed-ratio.png b/01-0002-cropped-transformed-ratio.png index fa1d4d9..21b781c 100644 Binary files a/01-0002-cropped-transformed-ratio.png and b/01-0002-cropped-transformed-ratio.png differ diff --git a/01-0003-cropped-transformed-ratio.png b/01-0003-cropped-transformed-ratio.png index 0df6d8d..a7375e0 100644 Binary files a/01-0003-cropped-transformed-ratio.png and b/01-0003-cropped-transformed-ratio.png differ diff --git a/display_key.html b/display_key.html index 7d29f47..9ae6935 100644 --- a/display_key.html +++ b/display_key.html @@ -4,19 +4,27 @@ Temperature -
- 700°C +
+ 0°C -
+
800°C -
+
900°C -
+
+ 1000°C + + +
+ 1000°C + + +
1000°C diff --git a/ratio_pyrometry.py b/ratio_pyrometry.py index 72369be..4779d33 100644 --- a/ratio_pyrometry.py +++ b/ratio_pyrometry.py @@ -12,8 +12,8 @@ f_stop = 2.4 ISO = 64 # basically brightness # pyrometry config -MAX_GR_RATIO = 1200 -MIN_GR_RATIO = 0 +MAX_TEMP = 1200 +MIN_TEMP = 60 # original range from paper # MAX_GR_RATIO = 1200 # MIN_GR_RATIO = 600 @@ -27,10 +27,17 @@ y2 = -1 # post-processing smoothing_radius = 2 +# temperature key generation +key_entries = 6 + + @jit(nopython=True) def rg_ratio_normalize(imgarr): - tmin = MAX_GR_RATIO + # set max & min to most extreme values, + # work up & down respectively from there + tmin = MAX_TEMP tmax = 0 + imgnew = imgarr for i in range(len(imgarr)): for j in range(len(imgarr[i])): @@ -42,7 +49,7 @@ def rg_ratio_normalize(imgarr): temp_C = pyrometry_calibration_formula(g_norm, r_norm) # remove pixels outside calibration range - if MAX_GR_RATIO != None and temp_C > MAX_GR_RATIO or MIN_GR_RATIO != None and temp_C < MIN_GR_RATIO: + if MAX_TEMP != None and temp_C > MAX_TEMP or MIN_TEMP != None and temp_C < MIN_TEMP: temp_C = 0 # update min & max @@ -96,12 +103,39 @@ print(f"max: {tmax}°C") k = [] for i in range(smoothing_radius): k.append([1/(smoothing_radius**2) for i in range(smoothing_radius)]) - # for j in range(smoothing_radius): kernel = np.array(k) img = cv.filter2D(src=img, ddepth=-1, kernel=kernel) -# apply jet color map -img = cv.applyColorMap(img, cv.COLORMAP_JET) +# write colormapped image +img_jet = cv.applyColorMap(img, cv.COLORMAP_JET) +cv.imwrite(f'{file_name}-cropped-transformed-ratio.{file_ext}', img_jet) -cv.imwrite(f'{file_name}-cropped-transformed-ratio.{file_ext}', img) +# --- Generate temperature key --- + +# adjust max & min temps to be the same as the image +# tmin_adj = tmin / (smoothing_radius ** 2) +# tmax_adj = tmax / (smoothing_radius ** 2) +# Generate 6-step key +step = (tmax - tmin) / (key_entries-1) +temps = [] +key_img_arr = [[]] +for i in range(key_entries): + res_temp = tmin + (i * step) + res_color = (tmax - (i * step)) / MAX_TEMP * 255 + temps.append(res_temp) + key_img_arr[0].append([res_color, res_color, res_color]) + +key_img = np.array(key_img_arr).astype(np.uint8) +key_img_jet = cv.applyColorMap(key_img, cv.COLORMAP_JET) +# cv.imwrite(f'{file_name}-key.{file_ext}', key_img_jet) + +tempkey = {} +for i in range(len(temps)): + c = key_img_jet[0][i] + tempkey[temps[i]] = f"rgb({c[0]}, {c[1]}, {c[2]})" + +# with open(f"{file_name}-tempkey.json", "w+") as file_out: +# json.dump(tempkey, file_out) + +print(json.dumps(tempkey, indent=4))