Added Edge Detection module (#168)

* step 1 grayscale

Signed-off-by: tech4GT <varun.gupta1798@gmail.com>

* add basic edge detection resolves #166

* updated the description

Signed-off-by: tech4GT <varun.gupta1798@gmail.com>

* fixed typo

Signed-off-by: tech4GT <varun.gupta1798@gmail.com>

* updated the description for edge detection module

Signed-off-by: tech4GT <varun.gupta1798@gmail.com>

* add NonMaxSuppression and DoubleThreshold

Signed-off-by: tech4GT <varun.gupta1798@gmail.com>

* comlpeted edge detection

Signed-off-by: tech4GT <varun.gupta1798@gmail.com>

* cleared remaining weak edges

Signed-off-by: tech4GT <varun.gupta1798@gmail.com>
This commit is contained in:
Varun Gupta
2018-02-17 03:37:00 +05:30
committed by Jeffrey Warren
parent 32c5a29906
commit bbef4bca57
8 changed files with 18642 additions and 153 deletions

View File

@@ -0,0 +1,65 @@
/*
* Detect Edges in an Image
*/
module.exports = function edgeDetect(options,UI) {
options = options || {};
options.title = "Detect Edges";
options.description = "Detects the edges in an image";
options.blur = options.blur || 2
options.highThresholdRatio = options.highThresholdRatio||0.2
options.lowThresholdRatio = options.lowThresholdRatio||0.15
// Tell UI that a step has been set up.
UI.onSetup(options.step);
var output;
// The function which is called on every draw.
function draw(input,callback) {
// Tell UI that a step is being drawn.
UI.onDraw(options.step);
var step = this;
// Extra Manipulation function used as an enveloper for applying gaussian blur and Convolution
function extraManipulation(pixels){
pixels = require('ndarray-gaussian-filter')(pixels,options.blur)
return require('./EdgeUtils')(pixels,options.highThresholdRatio,options.lowThresholdRatio)
}
function changePixel(r, g, b, a) {
return [(r+g+b)/3, (r+g+b)/3, (r+g+b)/3, a];
}
function output(image,datauri,mimetype){
// This output is accessible by Image Sequencer
step.output = {src:datauri,format:mimetype};
// This output is accessible by UI
options.step.output = datauri;
// Tell UI that step has been drawn.
UI.onComplete(options.step);
}
return require('../_nomodule/PixelManipulation.js')(input, {
output: output,
changePixel: changePixel,
extraManipulation: extraManipulation,
format: input.format,
image: options.image,
callback: callback
});
}
return {
options: options,
draw: draw,
output: output,
UI: UI
}
}