Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var WHITE_SMILE = '😠'
- , BLACK_SMILE = '😡'
- , SIZE = 17;
- function otsu(histogram, pixelsNumber) {
- var sum = 0
- , sumB = 0
- , wB = 0
- , wF = 0
- , mB
- , mF
- , max = 0
- , between
- , threshold = 0;
- for (var i = 0; i < 256; ++i) {
- wB += histogram[i];
- if (wB == 0)
- continue;
- wF = pixelsNumber - wB;
- if (wF == 0)
- break;
- sumB += i * histogram[i];
- mB = sumB / wB;
- mF = (sum - sumB) / wF;
- between = wB * wF * Math.pow(mB - mF, 2);
- if (between > max) {
- max = between;
- threshold = i;
- }
- }
- return threshold;
- }
- var img = document.getElementsByTagName('img')[0]
- , cnv = document.createElement('canvas')
- , ctx = cnv.getContext('2d'),
- lines = Array(SIZE)
- ;
- img.width = img.height = SIZE;
- cnv.width = img.width;
- cnv.height = img.height;
- ctx.drawImage(imgCopy, 0, 0);
- var imData = ctx.getImageData(0, 0, cnv.width, cnv.height)
- , histogram = Array(256)
- , i
- , j
- , k
- , red
- , green
- , blue
- , gray;
- for (i = 0; i < 256; ++i)
- histogram[i] = 0;
- for (i = 0; i < imData.data.length; i += 4) {
- red = imData.data[i];
- blue = imData.data[i + 1];
- green = imData.data[i + 2];
- // alpha = imData.data[i + 3];
- // https://en.wikipedia.org/wiki/Grayscale
- gray = red * .2126 + green * .07152 + blue * .0722;
- histogram[Math.round(gray)] += 1;
- }
- var threshold = otsu(histogram, imData.data.length / 4);
- console.log("threshold = %s", threshold);
- for (i = 0; i < imData.height; ++i) {
- lines[i] = "";
- for (j = imData.height * i * 4, k = j + imData.width * 4; ++j) {
- lines[i] += imData.data[i] > threshold ? WHITE_SMILE : BLACK_SMILE;
- }
- }
- console.log(lines.join('\n'));
- /*
- 😠😠😠😠😠😠😠😠😡😠😠😠😠😠😠😠ðŸ˜
- 😠😠😠😠😠😠😠😡😡😡😠😠😠😠😠😠ðŸ˜
- 😠😠😠😠😠😠😡😡😡😡😠😠😠😠😠😠ðŸ˜
- 😠😠😠😠😠😡😡😡😡😠😠😠😠😠😠😠ðŸ˜
- 😠😠😠😠😡😡😡😡😠😠😠😡😡😠😠😠ðŸ˜
- 😠😠😠😠😡😡😡😠😠😠😡😡😡😡😠😠ðŸ˜
- 😠😠😠😠😠😡😡😡😠😡😡😡😡😡😡😠ðŸ˜
- 😠😡😠😠😠😠😡😡😡😡😡😠😡😡😡😡ðŸ˜
- 😡😡😡😠😠😠😠😡😡😡😠😠😠😡😡😡😡
- 😠😡😡😡😠😠😡😡😡😡😡😠😠😠😡😡ðŸ˜
- 😠😠😡😡😡😡😡😡😠😡😡😡😠😠😠😠ðŸ˜
- 😠😠😠😡😡😡😡😠😠😠😡😡😡😠😠😠ðŸ˜
- 😠😠😠😠😡😡😠😠😠😡😡😡😡😠😠😠ðŸ˜
- 😠😠😠😠😠😠😠😠😡😡😡😡😠😠😠😠ðŸ˜
- 😠😠😠😠😠😠😠😡😡😡😡😠😠😠😠😠ðŸ˜
- 😠😠😠😠😠😠😠😡😡😡😠😠😠😠😠😠ðŸ˜
- 😠😠😠😠😠😠😠😠😡😠😠😠😠😠😠😠ðŸ˜
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement