function doColorize(img, options, cb) {
  options = options || {}
  var gray = !!(options.grayscale || 
                options.greyscale || 
                options.luminance || 
                options.gray ||
                options.grey ||
                options.colormap === "gray")
  if(img.dimension === 3) {
    if(gray) {
      //Convert to grayscale
      var gbuf = pool.mallocFloat32(img.size)
      var gimg = ndarray(gbuf, [img.shape[0], img.shape[1]])
      luminance(gimg, img)
      if(("min" in options) || ("max" in options)) {
        var lo = ("min" in options) ? +options.min : ops.infimum(gimg)
        ops.subseq(gimg, lo)
        var hi = ("max" in options) ? +options.max : ops.supremum(gimg)
        ops.mulseq(gimg, 255.0 / (hi - lo))
      }
      cb(gimg)
      pool.freeFloat32(gbuf)
    } else {
      if(("min" in options) || ("max" in options)) {
        var gbuf = pool.mallocFloat32(img.size)
        var gimg = ndarray(gbuf, img.shape)
        var lo = ("min" in options) ? +options.min : ops.infimum(img)
        ops.subeq(gimg, img, lo)
        var hi = ("max" in options) ? +options.max : ops.supremum(img)
        ops.mulseq(gimg, 255.0 / (hi - lo))
        cb(gimg)
        pool.freeFloat32(gbuf)
      } else {
        cb(img)
      }
    }
  } else if(img.dimension === 2) {
    var buf = pool.mallocUint8(img.size * 3)
    var opts = { "outBuffer": buf }
    if("min" in options) {
      opts.min = +options.min
    }
    if("max" in options) {
      opts.max = +options.max
    }
    if("colormap" in options) {
      opts.colormap = options.colormap
    }
    if(gray) {
      opts.colormap = "gray"
    }
    var result = colorize(img, opts)
    cb(result)
    pool.freeUint8(buf)
  } else {
    throw new Error("invalid image dimensions")
  }
}
var ndarray = require("ndarray")
var ndscratch = require("ndarray-scratch")
var ops = require("ndarray-ops")
var lena = require("baboon-image")
var luminance = require("luminance")
var gaussFilter = require("ndarray-gaussian-filter")
var pool = require("typedarray-pool")
var colorize = require("apply-colormap")

var grayLena = luminance(lena)

var imageProcessingCanvas = document.getElementById("image-processing-canvas")
var imageProcessingContext = imageProcessingCanvas.getContext("2d")
var imageProcessingSigma = document.getElementById("image-processing-sigma")
var imageProcessingPixels = imageProcessingContext.createImageData(512, 512)
var imageProcessingNdarray = ndarray(imageProcessingPixels.data, [512, 512, 4], [512*4, 4, 1], 0)
ops.assigns(imageProcessingNdarray, 255)

function repaintImageProcessing() {
  var sigma = +imageProcessingSigma.value
  var filtered = ndscratch.malloc(grayLena.shape)
  var pixels = pool.mallocUint8(grayLena.size * 3)
  ops.assign(filtered, grayLena)
  gaussFilter(filtered, sigma)
  var colors = colorize(filtered, {
    colormap: "gray",
    outBuffer: pixels
  })
  ndscratch.free(filtered)
  ops.assign(imageProcessingNdarray.hi(-1,-1,3), colors)
  pool.freeUint8(pixels)
示例#3
0
'use strict';

var _ = require('underscore'),
    Promise = require('promise'),
    grayscale = require('luminance'),
    fs = require('fs'),
    la = require('sylvester'),
    lena = grayscale(require('lena')),
    Matrix = la.Matrix,
    Vector = la.Vector;

var samples = require('../src/utils/samples.js'),
    homography = require('../src/webmvs/homography.js'),
    rectification = require('../src/webmvs/rectification.js'),
    bundler = require('../src/math/bundler.js'),
    projections = require('../src/math/projections.js'),
    testUtils = require('../src/utils/testing.js'),
    rotate = require('../src/math/rotate.js');


function testPair(index1, index2){

    var data = samples.getTwoView(index1, index2),
        cam1 = data.cam1, cam2 = data.cam2,
        R1 = data.R1, t1 = data.t1, f1 = data.f1,
        R2 = data.R2, t2 = data.t2, f2 = data.f2,
        rotations = rectification(R1, R2, t1, t2, f1, f2),
        RR1 = rotations[0], RR2 = rotations[1];

//    var R1new = RR1.x(R1), t1new = RR1.x(t1),
//        R2new = RR2.x(R2), t2new = RR2.x(t2);
示例#4
0
'use strict'

var imshow = require('ndarray-imshow')
var baboon = require('baboon-image')
var luminance = require('luminance')
var applyHomography = require('../xform')
var scratch = require('ndarray-scratch')

var baboonGrey = luminance(
  scratch.zeros([baboon.shape[0], baboon.shape[1]]),
  baboon)

imshow(applyHomography(
  scratch.zeros(baboonGrey.shape),
  baboonGrey,
  [1, 0, 0,
   0, 1, 0,
   1, 100, 1]
))