Here is an example session with interactive Ruby (irb). It shows how HornetsEye can be used interactively.

interactive.rb(main):001:0> require 'hornetseye' => true interactive.rb(main):002:0> include Hornetseye => Object interactive.rb(main):003:0> img = MultiArray.load_ubytergb '../data/images/fubk.png' => MultiArray.ubytergb(384,288): [ [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], [ RGB( 255, 255, 255 ), RGB( 255, 255, 255 ), ... ], [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ], ... interactive.rb(main):004:0> x = img.sobel 0 => MultiArray.sintrgb(384,288): [ [ RGB( -231, -231, -231 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -486, -486, -486 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -664, -664, -664 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -486, -486, -486 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], ... interactive.rb(main):005:0> y = img.sobel 1 => MultiArray.sintrgb(384,288): [ [ RGB( -231, -231, -231 ), RGB( -308, -308, -308 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( -534, -534, -534 ), RGB( -712, -712, -712 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 534, 534, 534 ), RGB( 712, 712, 712 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], ... interactive.rb(main):006:0> sqr = x ** 2 + y ** 2 => MultiArray.intrgb(384,288): [ [ RGB( 106722, 106722, 106722 ), RGB( 94864, 94864, 94864 ), ... ], [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 521352, 521352, 521352 ), RGB( 506944, 506944, 506944 ), ... ], [ RGB( 440896, 440896, 440896 ), RGB( 0, 0, 0 ), ... ], [ RGB( 521352, 521352, 521352 ), RGB( 506944, 506944, 506944 ), ... ], [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], ... interactive.rb(main):007:0> result = MultiArray.intrgb( 384, 288 ).fill! => MultiArray.intrgb(384,288): [ [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], ... interactive.rb(main):008:0> result.r = Math.sqrt sqr.r => MultiArray.dfloat(384,288): [ [ 326.683332908185, 308.0, 308.0, 308.0, 308.0, 308.0, 308.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ], [ 664.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 356.0, ... ], [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], ... interactive.rb(main):009:0> result.g = Math.sqrt sqr.g => MultiArray.dfloat(384,288): [ [ 326.683332908185, 308.0, 308.0, 308.0, 308.0, 308.0, 308.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ], [ 664.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 356.0, ... ], [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], ... interactive.rb(main):010:0> result.b = Math.sqrt sqr.b => MultiArray.dfloat(384,288): [ [ 326.683332908185, 308.0, 308.0, 308.0, 308.0, 308.0, 308.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ], [ 664.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 356.0, ... ], [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ], ... interactive.rb(main):011:0> result.normalise.save_ubytergb 'interactive.png' => MultiArray.ubytergb(384,288): [ [ RGB( 72, 72, 72 ), RGB( 68, 68, 68 ), RGB( 68, 68, 68 ), ... ], [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 161, 161, 161 ), RGB( 159, 159, 159 ), ... ], [ RGB( 148, 148, 148 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 161, 161, 161 ), RGB( 159, 159, 159 ), ... ], [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ], ... interactive.rb(main):012:0> quit