Skip to content

Instantly share code, notes, and snippets.

@haehn
Created May 1, 2021 00:00
Show Gist options
  • Save haehn/42ce3115223ce687106d66916bb97954 to your computer and use it in GitHub Desktop.
Save haehn/42ce3115223ce687106d66916bb97954 to your computer and use it in GitHub Desktop.
element = cornerstone.getEnabledElements()[0];
pixels = element.image.getPixelData();
new_pixels = Sobel(pixels, element.image.width, element.image.height);
pixels.set(new_pixels);
element.needsRedraw = true;
function Sobel(data, width, height) {
var kernelX = [
[-1,0,1],
[-2,0,2],
[-1,0,1]
];
var kernelY = [
[-1,-2,-1],
[0,0,0],
[1,2,1]
];
var sobelData = [];
function bindPixelAt(data) {
return function(x, y, i) {
i = i || 0;
return data[((width * y) + x) + i];
};
}
pixelAt = bindPixelAt(data);
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
var pixelX = (
(kernelX[0][0] * pixelAt(x - 1, y - 1)) +
(kernelX[0][1] * pixelAt(x, y - 1)) +
(kernelX[0][2] * pixelAt(x + 1, y - 1)) +
(kernelX[1][0] * pixelAt(x - 1, y)) +
(kernelX[1][1] * pixelAt(x, y)) +
(kernelX[1][2] * pixelAt(x + 1, y)) +
(kernelX[2][0] * pixelAt(x - 1, y + 1)) +
(kernelX[2][1] * pixelAt(x, y + 1)) +
(kernelX[2][2] * pixelAt(x + 1, y + 1))
);
var pixelY = (
(kernelY[0][0] * pixelAt(x - 1, y - 1)) +
(kernelY[0][1] * pixelAt(x, y - 1)) +
(kernelY[0][2] * pixelAt(x + 1, y - 1)) +
(kernelY[1][0] * pixelAt(x - 1, y)) +
(kernelY[1][1] * pixelAt(x, y)) +
(kernelY[1][2] * pixelAt(x + 1, y)) +
(kernelY[2][0] * pixelAt(x - 1, y + 1)) +
(kernelY[2][1] * pixelAt(x, y + 1)) +
(kernelY[2][2] * pixelAt(x + 1, y + 1))
);
var magnitude = Math.sqrt((pixelX * pixelX) + (pixelY * pixelY))>>>0;
sobelData.push(magnitude);
}
}
return sobelData;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment