f8g

2008-08-01から1ヶ月間の記事一覧

画像から文字へ変換する

http://taro.haun.org/pgm2kanji.html JavaScript用変換表 (全角スペース付け足し) var chars = ["\u3000", "\uFF0E", "\u00B4", "\u3001", "\uFF3E", "\u3002", "\u2018", "\uFF1B", "\u30FE", "\u30FC", "\u30CE", "\u3043", "\u304F", "\u30B7", "\u3079…

Tombloo + 部分的な画像処理

Tomblooの'Photo - Capture'のコードを読むと、selectRegionで範囲を選択できて、roundPosition、getElementPositionで要素の位置なんかを取得できるようです。それらを使って、部分的な画像処理をしてみます。 最新版が必要: image_processing.js Tombloo.S…

Tombloo + 画像処理

ImageProcessing.jsをTomblooで使ってみる。 スクリプトディレクトリにimage_processing.jsを保存。 extractorを書いてスクリプトディレクトリに保存。 例 Tombloo.Service.extractors.register({ name : 'Photo - Filter', ICON : 'chrome://tombloo/skin/p…

自動コントラスト

画像濃度変換処理 濃度の最小値が0, 最大値が255になるようにする濃度変換。与える関数は、 var f = function(x){ var a = 255 / (max - min); var b = - a * min; return a * x + b; }; 一般的な画像では最大値≒255、最小値≒0ということが多いので、見た目…

ラベリング

http://www.microsoft.com/japan/msdn/academic/Articles/Algorithm/03/ これ使用 ImageProcessing.prototype.f= function(fnc){ return fnc(this); }; var ip = ImageProcessing.load("img.png"); // ImageDataを使用した方が速い ip.support.pixel = false…

FirefoxのImageDataの挙動

各ピクセルの濃度を+50にした図。(左: Firefox、右: Opera) Firefoxだと255を超えるとダメらしい。ちゃんと丸めると直る。 ちょっとしたことで全然別物になってしまって怖いので気をつけよう!

ImageDataとgetPixel, setPixelの速度比較

比較項目 ImageData (all) 画像全体のImageDataオブジェクトをあらかじめ変数で持っておき、dataの内容だけを変更して最後に1回putImageData。 ImageData (1px) 1 * 1のImageDataオブジェクトを用意しておいて, 1pxごと処理 & putImageData。 Pixel getPixel…

ハーフトーニング(拡散誤差法)

パターンを用いたものではなく、空間フィルタリングのときのようなフィルタを掛けて2値化。 コード これ使用 ImageProcessing.prototype.errorDiffuse = function(flt){ var self = this; // init var w = this.canvas.width; var h = this.canvas.height; v…

ハーフトーニング (ディザ法)

画像を2値化するハーフトーニングのDither法が面白かったので紹介。 コード パターンを与えると、それっぽく点を打つ。(これ使用) function dither(img, pattern){ var black = new ImageProcessing.Color(0, 0, 0); var white = new ImageProcessing.Colo…

画像に文字を仕込む

ありがちだけど、画素のRGBの値に文字コードを割り当てると、1ピクセルに3文字入れることができる。 サンプルコード。 (前までのもそうだけど、このライブラリを使っている) function CodeToImage(canvas, code){ var ip = new ImageProcessing(canvas); i…

JavaScriptで空間フィルタリング

あるピクセル(V0.0)と周囲のピクセルとフィルタ行列を掛けて、それらの合計をV0.0のところに置くようなやつ。 Photoshopでは5*5, 7*7も高速にやれるけど、さすがにJavaScript/Canvasでは3*3でも遅い。 イメージ V-1.-1 V0.-1 V1.-1 V-1.0 V0.0 V1.0 V-1.1 V0…

JavaScriptで濃度変換

1pxごとに何らかの関数を与えて, 明るさなどを変える。セピアやグレースケールもこの類だと思います。 IronRubyのやつ http://d.hatena.ne.jp/arikui/20070918/1190050541 元画像 明るさ調整 var _f = function(n){ return function(x){ return x + n; }; };…