mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-15 12:50:04 +01:00
Segmented Colormap - Error
This commit is contained in:
82
dist/image-sequencer.js
vendored
82
dist/image-sequencer.js
vendored
@@ -35032,10 +35032,11 @@ module.exports = {
|
|||||||
'ndvi-red': require('./modules/NdviRed'),
|
'ndvi-red': require('./modules/NdviRed'),
|
||||||
'do-nothing-pix': require('./modules/DoNothingPix'),
|
'do-nothing-pix': require('./modules/DoNothingPix'),
|
||||||
'invert': require('./modules/Invert'),
|
'invert': require('./modules/Invert'),
|
||||||
'crop': require('./modules/Crop')
|
'crop': require('./modules/Crop'),
|
||||||
|
'segmented-colormap': require('./modules/SegmentedColormap')
|
||||||
}
|
}
|
||||||
|
|
||||||
},{"./modules/Crop":122,"./modules/DoNothing":123,"./modules/DoNothingPix":124,"./modules/GreenChannel":125,"./modules/Invert":126,"./modules/NdviRed":127}],120:[function(require,module,exports){
|
},{"./modules/Crop":122,"./modules/DoNothing":123,"./modules/DoNothingPix":124,"./modules/GreenChannel":125,"./modules/Invert":126,"./modules/NdviRed":127,"./modules/SegmentedColormap":129}],120:[function(require,module,exports){
|
||||||
function ReplaceImage(ref,selector,steps,options) {
|
function ReplaceImage(ref,selector,steps,options) {
|
||||||
if(!ref.options.inBrowser) return false; // This isn't for Node.js
|
if(!ref.options.inBrowser) return false; // This isn't for Node.js
|
||||||
this_ = ref;
|
this_ = ref;
|
||||||
@@ -35212,11 +35213,10 @@ module.exports = function DoNothing(options) {
|
|||||||
/*
|
/*
|
||||||
* Display only the green channel
|
* Display only the green channel
|
||||||
*/
|
*/
|
||||||
module.exports = function GreenChannel(options) {
|
module.exports = function DoNothingPix(options) {
|
||||||
|
|
||||||
options = options || {};
|
options = options || {};
|
||||||
options.title = "Green channel only";
|
options.title = "Do Nothing with pixels";
|
||||||
options.description = "Displays only the green channel of an image";
|
|
||||||
var output;
|
var output;
|
||||||
|
|
||||||
//function setup() {} // optional
|
//function setup() {} // optional
|
||||||
@@ -35419,4 +35419,74 @@ module.exports = function PixelManipulation(image, options) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},{"base64-stream":3,"get-pixels":27,"save-pixels":104}]},{},[116]);
|
},{"base64-stream":3,"get-pixels":27,"save-pixels":104}],129:[function(require,module,exports){
|
||||||
|
module.exports = function SegmentedColormap(options) {
|
||||||
|
|
||||||
|
options = options || {};
|
||||||
|
options.title = "Segmented Colormap";
|
||||||
|
var output
|
||||||
|
|
||||||
|
function draw(input,callback) {
|
||||||
|
this_ = this;
|
||||||
|
function changePixel(r, g, b, a) {
|
||||||
|
var ndvi = (r - b) / (r + b);
|
||||||
|
var normalized = (ndvi + 1) / 2;
|
||||||
|
var res = default_colormap(normalized);
|
||||||
|
return [res[0], res[1], res[2], 255];
|
||||||
|
}
|
||||||
|
function output(image,datauri,mimetype){
|
||||||
|
this_.output = {src:datauri,format:mimetype}
|
||||||
|
}
|
||||||
|
return require('./PixelManipulation.js')(input, {
|
||||||
|
output: output,
|
||||||
|
changePixel: changePixel,
|
||||||
|
format: input.format,
|
||||||
|
image: options.image,
|
||||||
|
callback: callback
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
options: options,
|
||||||
|
draw: draw,
|
||||||
|
output: output
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var greyscale_colormap = segmented_colormap([[0, [0, 0, 0], [255, 255, 255]], [1, [255, 255, 255], [255, 255, 255]]]);
|
||||||
|
|
||||||
|
var default_colormap = segmented_colormap([[0, [0, 0, 255], [38, 195, 195]], [0.5, [0, 150, 0], [255, 255, 0]], [0.75, [255, 255, 0], [255, 50, 50]]]);
|
||||||
|
|
||||||
|
var stretched_colormap = segmented_colormap([[0, [0, 0, 255], [0, 0, 255]], [0.1, [0, 0, 255], [38, 195, 195]], [0.5, [0, 150, 0], [255, 255, 0]], [0.7, [255, 255, 0], [255, 50, 50]], [0.9, [255, 50, 50], [255, 50, 50]]]);
|
||||||
|
|
||||||
|
var fastie_colormap = segmented_colormap([[0, [255, 255, 255], [0, 0, 0]], [0.167, [0, 0, 0], [255, 255, 255]], [0.33, [255, 255, 255], [0, 0, 0]], [0.5, [0, 0, 0], [140, 140, 255]], [0.55, [140, 140, 255], [0, 255, 0]], [0.63, [0, 255, 0], [255, 255, 0]], [0.75, [255, 255, 0], [255, 0, 0]], [0.95, [255, 0, 0], [255, 0, 255]]]);
|
||||||
|
|
||||||
|
function segmented_colormap(segments) {
|
||||||
|
return function(x) {
|
||||||
|
var i, result, x0, x1, xstart, y0, y1, _i, _j, _len, _ref, _ref1, _ref2, _ref3;
|
||||||
|
_ref = [0, 0], y0 = _ref[0], y1 = _ref[1];
|
||||||
|
_ref1 = [segments[0][0], 1], x0 = _ref1[0], x1 = _ref1[1];
|
||||||
|
if (x < x0) {
|
||||||
|
return y0;
|
||||||
|
}
|
||||||
|
for (i = _i = 0, _len = segments.length; _i < _len; i = ++_i) {
|
||||||
|
_ref2 = segments[i], xstart = _ref2[0], y0 = _ref2[1], y1 = _ref2[2];
|
||||||
|
x0 = xstart;
|
||||||
|
if (i === segments.length - 1) {
|
||||||
|
x1 = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
x1 = segments[i + 1][0];
|
||||||
|
if ((xstart <= x && x < x1)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result = [];
|
||||||
|
for (i = _j = 0, _ref3 = y0.length; 0 <= _ref3 ? _j < _ref3 : _j > _ref3; i = 0 <= _ref3 ? ++_j : --_j) {
|
||||||
|
result[i] = (x - x0) / (x1 - x0) * (y1[i] - y0[i]) + y0[i];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
},{"./PixelManipulation.js":128}]},{},[116]);
|
||||||
|
|||||||
1
output.txt
Normal file
1
output.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
data:image/jpeg;base64,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
|
||||||
@@ -7,5 +7,6 @@ module.exports = {
|
|||||||
'ndvi-red': require('./modules/NdviRed'),
|
'ndvi-red': require('./modules/NdviRed'),
|
||||||
'do-nothing-pix': require('./modules/DoNothingPix'),
|
'do-nothing-pix': require('./modules/DoNothingPix'),
|
||||||
'invert': require('./modules/Invert'),
|
'invert': require('./modules/Invert'),
|
||||||
'crop': require('./modules/Crop')
|
'crop': require('./modules/Crop'),
|
||||||
|
'segmented-colormap': require('./modules/SegmentedColormap')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
* Display only the green channel
|
* Display only the green channel
|
||||||
*/
|
*/
|
||||||
module.exports = function GreenChannel(options) {
|
module.exports = function DoNothingPix(options) {
|
||||||
|
|
||||||
options = options || {};
|
options = options || {};
|
||||||
options.title = "Green channel only";
|
options.title = "Do Nothing with pixels";
|
||||||
options.description = "Displays only the green channel of an image";
|
|
||||||
var output;
|
var output;
|
||||||
|
|
||||||
//function setup() {} // optional
|
//function setup() {} // optional
|
||||||
|
|||||||
68
src/modules/SegmentedColormap.js
Normal file
68
src/modules/SegmentedColormap.js
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
module.exports = function SegmentedColormap(options) {
|
||||||
|
|
||||||
|
options = options || {};
|
||||||
|
options.title = "Segmented Colormap";
|
||||||
|
var output
|
||||||
|
|
||||||
|
function draw(input,callback) {
|
||||||
|
this_ = this;
|
||||||
|
function changePixel(r, g, b, a) {
|
||||||
|
var ndvi = (r - b) / (r + b);
|
||||||
|
var normalized = (ndvi + 1) / 2;
|
||||||
|
var res = default_colormap(normalized);
|
||||||
|
return [res[0], res[1], res[2], 255];
|
||||||
|
}
|
||||||
|
function output(image,datauri,mimetype){
|
||||||
|
this_.output = {src:datauri,format:mimetype}
|
||||||
|
}
|
||||||
|
return require('./PixelManipulation.js')(input, {
|
||||||
|
output: output,
|
||||||
|
changePixel: changePixel,
|
||||||
|
format: input.format,
|
||||||
|
image: options.image,
|
||||||
|
callback: callback
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
options: options,
|
||||||
|
draw: draw,
|
||||||
|
output: output
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var greyscale_colormap = segmented_colormap([[0, [0, 0, 0], [255, 255, 255]], [1, [255, 255, 255], [255, 255, 255]]]);
|
||||||
|
|
||||||
|
var default_colormap = segmented_colormap([[0, [0, 0, 255], [38, 195, 195]], [0.5, [0, 150, 0], [255, 255, 0]], [0.75, [255, 255, 0], [255, 50, 50]]]);
|
||||||
|
|
||||||
|
var stretched_colormap = segmented_colormap([[0, [0, 0, 255], [0, 0, 255]], [0.1, [0, 0, 255], [38, 195, 195]], [0.5, [0, 150, 0], [255, 255, 0]], [0.7, [255, 255, 0], [255, 50, 50]], [0.9, [255, 50, 50], [255, 50, 50]]]);
|
||||||
|
|
||||||
|
var fastie_colormap = segmented_colormap([[0, [255, 255, 255], [0, 0, 0]], [0.167, [0, 0, 0], [255, 255, 255]], [0.33, [255, 255, 255], [0, 0, 0]], [0.5, [0, 0, 0], [140, 140, 255]], [0.55, [140, 140, 255], [0, 255, 0]], [0.63, [0, 255, 0], [255, 255, 0]], [0.75, [255, 255, 0], [255, 0, 0]], [0.95, [255, 0, 0], [255, 0, 255]]]);
|
||||||
|
|
||||||
|
function segmented_colormap(segments) {
|
||||||
|
return function(x) {
|
||||||
|
var i, result, x0, x1, xstart, y0, y1, _i, _j, _len, _ref, _ref1, _ref2, _ref3;
|
||||||
|
_ref = [0, 0], y0 = _ref[0], y1 = _ref[1];
|
||||||
|
_ref1 = [segments[0][0], 1], x0 = _ref1[0], x1 = _ref1[1];
|
||||||
|
if (x < x0) {
|
||||||
|
return y0;
|
||||||
|
}
|
||||||
|
for (i = _i = 0, _len = segments.length; _i < _len; i = ++_i) {
|
||||||
|
_ref2 = segments[i], xstart = _ref2[0], y0 = _ref2[1], y1 = _ref2[2];
|
||||||
|
x0 = xstart;
|
||||||
|
if (i === segments.length - 1) {
|
||||||
|
x1 = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
x1 = segments[i + 1][0];
|
||||||
|
if ((xstart <= x && x < x1)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result = [];
|
||||||
|
for (i = _j = 0, _ref3 = y0.length; 0 <= _ref3 ? _j < _ref3 : _j > _ref3; i = 0 <= _ref3 ? ++_j : --_j) {
|
||||||
|
result[i] = (x - x0) / (x1 - x0) * (y1[i] - y0[i]) + y0[i];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user