Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elphel-web-393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Elphel
elphel-web-393
Commits
bcb62aa3
Commit
bcb62aa3
authored
Jul 08, 2019
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
switched to flir's iron palette
parent
0e652066
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
145 additions
and
5 deletions
+145
-5
jquery-jp4.js
src/jp4-canvas/jquery-jp4.js
+145
-5
No files found.
src/jp4-canvas/jquery-jp4.js
View file @
bcb62aa3
...
@@ -70,6 +70,74 @@
...
@@ -70,6 +70,74 @@
var
PIXELS
=
[];
var
PIXELS
=
[];
// https://stackoverflow.com/questions/28495390/thermal-imaging-palette
var
iron_palette
=
[
"#00000a"
,
"#000014"
,
"#00001e"
,
"#000025"
,
"#00002a"
,
"#00002e"
,
"#000032"
,
"#000036"
,
"#00003a"
,
"#00003e"
,
"#000042"
,
"#000046"
,
"#00004a"
,
"#00004f"
,
"#000052"
,
"#010055"
,
"#010057"
,
"#020059"
,
"#02005c"
,
"#03005e"
,
"#040061"
,
"#040063"
,
"#050065"
,
"#060067"
,
"#070069"
,
"#08006b"
,
"#09006e"
,
"#0a0070"
,
"#0b0073"
,
"#0c0074"
,
"#0d0075"
,
"#0d0076"
,
"#0e0077"
,
"#100078"
,
"#120079"
,
"#13007b"
,
"#15007c"
,
"#17007d"
,
"#19007e"
,
"#1b0080"
,
"#1c0081"
,
"#1e0083"
,
"#200084"
,
"#220085"
,
"#240086"
,
"#260087"
,
"#280089"
,
"#2a0089"
,
"#2c008a"
,
"#2e008b"
,
"#30008c"
,
"#32008d"
,
"#34008e"
,
"#36008e"
,
"#38008f"
,
"#390090"
,
"#3b0091"
,
"#3c0092"
,
"#3e0093"
,
"#3f0093"
,
"#410094"
,
"#420095"
,
"#440095"
,
"#450096"
,
"#470096"
,
"#490096"
,
"#4a0096"
,
"#4c0097"
,
"#4e0097"
,
"#4f0097"
,
"#510097"
,
"#520098"
,
"#540098"
,
"#560098"
,
"#580099"
,
"#5a0099"
,
"#5c0099"
,
"#5d009a"
,
"#5f009a"
,
"#61009b"
,
"#63009b"
,
"#64009b"
,
"#66009b"
,
"#68009b"
,
"#6a009b"
,
"#6c009c"
,
"#6d009c"
,
"#6f009c"
,
"#70009c"
,
"#71009d"
,
"#73009d"
,
"#75009d"
,
"#77009d"
,
"#78009d"
,
"#7a009d"
,
"#7c009d"
,
"#7e009d"
,
"#7f009d"
,
"#81009d"
,
"#83009d"
,
"#84009d"
,
"#86009d"
,
"#87009d"
,
"#89009d"
,
"#8a009d"
,
"#8b009d"
,
"#8d009d"
,
"#8f009c"
,
"#91009c"
,
"#93009c"
,
"#95009c"
,
"#96009b"
,
"#98009b"
,
"#99009b"
,
"#9b009b"
,
"#9c009b"
,
"#9d009b"
,
"#9f009b"
,
"#a0009b"
,
"#a2009b"
,
"#a3009b"
,
"#a4009b"
,
"#a6009a"
,
"#a7009a"
,
"#a8009a"
,
"#a90099"
,
"#aa0099"
,
"#ab0099"
,
"#ad0099"
,
"#ae0198"
,
"#af0198"
,
"#b00198"
,
"#b00198"
,
"#b10197"
,
"#b20197"
,
"#b30196"
,
"#b40296"
,
"#b50295"
,
"#b60295"
,
"#b70395"
,
"#b80395"
,
"#b90495"
,
"#ba0495"
,
"#ba0494"
,
"#bb0593"
,
"#bc0593"
,
"#bd0593"
,
"#be0692"
,
"#bf0692"
,
"#bf0692"
,
"#c00791"
,
"#c00791"
,
"#c10890"
,
"#c10990"
,
"#c20a8f"
,
"#c30a8e"
,
"#c30b8e"
,
"#c40c8d"
,
"#c50c8c"
,
"#c60d8b"
,
"#c60e8a"
,
"#c70f89"
,
"#c81088"
,
"#c91187"
,
"#ca1286"
,
"#ca1385"
,
"#cb1385"
,
"#cb1484"
,
"#cc1582"
,
"#cd1681"
,
"#ce1780"
,
"#ce187e"
,
"#cf187c"
,
"#cf197b"
,
"#d01a79"
,
"#d11b78"
,
"#d11c76"
,
"#d21c75"
,
"#d21d74"
,
"#d31e72"
,
"#d32071"
,
"#d4216f"
,
"#d4226e"
,
"#d5236b"
,
"#d52469"
,
"#d62567"
,
"#d72665"
,
"#d82764"
,
"#d82862"
,
"#d92a60"
,
"#da2b5e"
,
"#da2c5c"
,
"#db2e5a"
,
"#db2f57"
,
"#dc2f54"
,
"#dd3051"
,
"#dd314e"
,
"#de324a"
,
"#de3347"
,
"#df3444"
,
"#df3541"
,
"#df363d"
,
"#e0373a"
,
"#e03837"
,
"#e03933"
,
"#e13a30"
,
"#e23b2d"
,
"#e23c2a"
,
"#e33d26"
,
"#e33e23"
,
"#e43f20"
,
"#e4411d"
,
"#e4421c"
,
"#e5431b"
,
"#e54419"
,
"#e54518"
,
"#e64616"
,
"#e74715"
,
"#e74814"
,
"#e74913"
,
"#e84a12"
,
"#e84c10"
,
"#e84c0f"
,
"#e94d0e"
,
"#e94d0d"
,
"#ea4e0c"
,
"#ea4f0c"
,
"#eb500b"
,
"#eb510a"
,
"#eb520a"
,
"#eb5309"
,
"#ec5409"
,
"#ec5608"
,
"#ec5708"
,
"#ec5808"
,
"#ed5907"
,
"#ed5a07"
,
"#ed5b06"
,
"#ee5c06"
,
"#ee5c05"
,
"#ee5d05"
,
"#ee5e05"
,
"#ef5f04"
,
"#ef6004"
,
"#ef6104"
,
"#ef6204"
,
"#f06303"
,
"#f06403"
,
"#f06503"
,
"#f16603"
,
"#f16603"
,
"#f16703"
,
"#f16803"
,
"#f16902"
,
"#f16a02"
,
"#f16b02"
,
"#f16b02"
,
"#f26c01"
,
"#f26d01"
,
"#f26e01"
,
"#f36f01"
,
"#f37001"
,
"#f37101"
,
"#f37201"
,
"#f47300"
,
"#f47400"
,
"#f47500"
,
"#f47600"
,
"#f47700"
,
"#f47800"
,
"#f47a00"
,
"#f57b00"
,
"#f57c00"
,
"#f57e00"
,
"#f57f00"
,
"#f68000"
,
"#f68100"
,
"#f68200"
,
"#f78300"
,
"#f78400"
,
"#f78500"
,
"#f78600"
,
"#f88700"
,
"#f88800"
,
"#f88800"
,
"#f88900"
,
"#f88a00"
,
"#f88b00"
,
"#f88c00"
,
"#f98d00"
,
"#f98d00"
,
"#f98e00"
,
"#f98f00"
,
"#f99000"
,
"#f99100"
,
"#f99200"
,
"#f99300"
,
"#fa9400"
,
"#fa9500"
,
"#fa9600"
,
"#fb9800"
,
"#fb9900"
,
"#fb9a00"
,
"#fb9c00"
,
"#fc9d00"
,
"#fc9f00"
,
"#fca000"
,
"#fca100"
,
"#fda200"
,
"#fda300"
,
"#fda400"
,
"#fda600"
,
"#fda700"
,
"#fda800"
,
"#fdaa00"
,
"#fdab00"
,
"#fdac00"
,
"#fdad00"
,
"#fdae00"
,
"#feaf00"
,
"#feb000"
,
"#feb100"
,
"#feb200"
,
"#feb300"
,
"#feb400"
,
"#feb500"
,
"#feb600"
,
"#feb800"
,
"#feb900"
,
"#feb900"
,
"#feba00"
,
"#febb00"
,
"#febc00"
,
"#febd00"
,
"#febe00"
,
"#fec000"
,
"#fec100"
,
"#fec200"
,
"#fec300"
,
"#fec400"
,
"#fec500"
,
"#fec600"
,
"#fec700"
,
"#fec800"
,
"#fec901"
,
"#feca01"
,
"#feca01"
,
"#fecb01"
,
"#fecc02"
,
"#fecd02"
,
"#fece03"
,
"#fecf04"
,
"#fecf04"
,
"#fed005"
,
"#fed106"
,
"#fed308"
,
"#fed409"
,
"#fed50a"
,
"#fed60a"
,
"#fed70b"
,
"#fed80c"
,
"#fed90d"
,
"#ffda0e"
,
"#ffda0e"
,
"#ffdb10"
,
"#ffdc12"
,
"#ffdc14"
,
"#ffdd16"
,
"#ffde19"
,
"#ffde1b"
,
"#ffdf1e"
,
"#ffe020"
,
"#ffe122"
,
"#ffe224"
,
"#ffe226"
,
"#ffe328"
,
"#ffe42b"
,
"#ffe42e"
,
"#ffe531"
,
"#ffe635"
,
"#ffe638"
,
"#ffe73c"
,
"#ffe83f"
,
"#ffe943"
,
"#ffea46"
,
"#ffeb49"
,
"#ffeb4d"
,
"#ffec50"
,
"#ffed54"
,
"#ffee57"
,
"#ffee5b"
,
"#ffee5f"
,
"#ffef63"
,
"#ffef67"
,
"#fff06a"
,
"#fff06e"
,
"#fff172"
,
"#fff177"
,
"#fff17b"
,
"#fff280"
,
"#fff285"
,
"#fff28a"
,
"#fff38e"
,
"#fff492"
,
"#fff496"
,
"#fff49a"
,
"#fff59e"
,
"#fff5a2"
,
"#fff5a6"
,
"#fff6aa"
,
"#fff6af"
,
"#fff7b3"
,
"#fff7b6"
,
"#fff8ba"
,
"#fff8bd"
,
"#fff8c1"
,
"#fff8c4"
,
"#fff9c7"
,
"#fff9ca"
,
"#fff9cd"
,
"#fffad1"
,
"#fffad4"
,
"#fffbd8"
,
"#fffcdb"
,
"#fffcdf"
,
"#fffde2"
,
"#fffde5"
,
"#fffde8"
,
"#fffeeb"
,
"#fffeee"
,
"#fffef1"
,
"#fffef4"
,
"#fffff6"
];
function
get_palette_color
(
v
){
v
=
v
*
(
iron_palette
.
length
-
1
);
v_lo
=
Math
.
floor
(
v
);
//v_hi = Math.ceil(v);
// don't interpolate
return
iron_palette
[
v_lo
];
}
// only valid values are allowed otherwise - disable
// only valid values are allowed otherwise - disable
if
((
settings
.
lowres
!=
0
)
&&
(
settings
.
lowres
!=
1
)
&&
(
settings
.
lowres
!=
2
)
&&
(
settings
.
lowres
!=
4
)
&&
(
settings
.
lowres
!=
8
)){
if
((
settings
.
lowres
!=
0
)
&&
(
settings
.
lowres
!=
1
)
&&
(
settings
.
lowres
!=
2
)
&&
(
settings
.
lowres
!=
4
)
&&
(
settings
.
lowres
!=
8
)){
settings
.
lowres
=
0
;
settings
.
lowres
=
0
;
...
@@ -223,16 +291,88 @@
...
@@ -223,16 +291,88 @@
// convert to C
// convert to C
rgba_16bit
=
rgba_16bit
.
map
(
x
=>
x
/
100
-
273.15
);
rgba_16bit
=
rgba_16bit
.
map
(
x
=>
x
/
100
-
273.15
);
// scale
t_lo
=
10
;
// display based on histogram
t_hi
=
30
;
function
get_t_lo
(
a
,
p
=
0.05
,
bins
=
1024
){
let
min
=
Math
.
min
(...
a
);
let
max
=
Math
.
max
(...
a
);
let
bin_height
=
(
max
-
min
)
/
bins
;
for
(
let
i
=
0
;
i
<
bins
;
i
++
){
let
bin_lo
=
min
+
(
i
+
0
)
*
bin_height
;
let
bin_hi
=
min
+
(
i
+
1
)
*
bin_height
;
let
a_f
=
a
.
filter
(
x
=>
x
<
bin_hi
);
if
(
a_f
.
length
>=
p
*
a
.
length
){
return
(
bin_lo
+
bin_hi
)
/
2
;
}
}
return
0
;
}
// display based on histogram
function
get_t_hi
(
a
,
p
=
0.01
,
bins
=
1024
){
let
min
=
Math
.
min
(...
a
);
let
max
=
Math
.
max
(...
a
);
let
bin_height
=
(
max
-
min
)
/
bins
;
for
(
let
i
=
0
;
i
<
bins
;
i
++
){
let
bin_lo
=
max
-
(
i
+
1
)
*
bin_height
;
let
bin_hi
=
max
-
(
i
+
0
)
*
bin_height
;
let
a_f
=
a
.
filter
(
x
=>
x
>
bin_lo
);
if
(
a_f
.
length
>=
p
*
a
.
length
){
return
(
bin_lo
+
bin_hi
)
/
2
;
}
}
return
0
;
}
// scale - 0.0-1.0
t_lo
=
get_t_lo
(
rgba_16bit
);
t_hi
=
get_t_hi
(
rgba_16bit
);
t_lo
=
t_lo
.
toFixed
(
2
);
t_hi
=
t_hi
.
toFixed
(
2
);
//console.log(t_lo+" "+t_hi);
rgba_16bit
=
rgba_16bit
.
map
(
x
=>
(
x
-
t_lo
)
/
(
t_hi
-
t_lo
));
rgba_16bit
=
rgba_16bit
.
map
(
x
=>
(
x
-
t_lo
)
/
(
t_hi
-
t_lo
));
rgba_16bit
=
rgba_16bit
.
map
(
x
=>
255
*
x
*
x
);
// get index
//rgba_16bit = rgba_16bit.map(x => iron_palette[Math.round(x*(iron_palette.length-1))]);
// this is for linear black n white
//rgba_16bit = rgba_16bit.map(x => 255*x*x);
}
}
var
rgba_clamped
=
new
Uint8ClampedArray
(
rgba_16bit
.
length
*
4
);
var
rgba_clamped
=
new
Uint8ClampedArray
(
rgba_16bit
.
length
*
4
);
rgba_clamped
=
rgba_clamped
.
map
((
x
,
i
)
=>
rgba_16bit
[(
i
-
i
%
4
)
/
4
]);
//rgba_clamped = rgba_clamped.map((x,i) => rgba_16bit[(i-i%4)/4]);
rgba_clamped
=
rgba_clamped
.
map
((
x
,
i
)
=>
{
let
v
=
rgba_16bit
[(
i
-
i
%
4
)
/
4
];
v
=
(
v
>
1
)?
1
:
v
;
v
=
(
v
<
0
)?
0
:
v
;
v
=
get_palette_color
(
v
);
if
(
i
%
4
==
0
){
v
=
v
.
slice
(
1
,
3
);
}
else
if
(
i
%
4
==
1
){
v
=
v
.
slice
(
3
,
5
);
}
else
if
(
i
%
4
==
2
){
v
=
v
.
slice
(
5
,
7
);
}
else
{
return
255
;
}
v
=
parseInt
(
v
,
16
);
return
v
;
});
rgba_clamped
=
rgba_clamped
.
map
((
x
,
i
)
=>
(
i
%
4
==
3
)?
255
:
x
);
rgba_clamped
=
rgba_clamped
.
map
((
x
,
i
)
=>
(
i
%
4
==
3
)?
255
:
x
);
var
rgba_idata
=
new
ImageData
(
rgba_clamped
,
ifds
[
0
].
width
,
ifds
[
0
].
height
);
var
rgba_idata
=
new
ImageData
(
rgba_clamped
,
ifds
[
0
].
width
,
ifds
[
0
].
height
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment