Houdini Dithering Tool
Year: 2023
Type: software
Overview
Houdiniで様々な表現手法をテストしていた時期があり、このツールはその中の一つとして作ったもの。2D画像を入力として受け取り、Ordered Ditheringを適用するHoudiniツールになっている。
基本的な白黒ディザリングに加えて、RGB各チャンネルを個別にディザリング処理することでカラー出力にも対応している。また、Aelibを使ったSVG書き出し機能も実装しており、ベクターデータとして出力できるので印刷物にも利用できる。
実際にEvery Subpixel Mattersの展示では、このツールをベースにしてポスター群、書籍、リソグラフ印刷、スクリーン表現など幅広く応用している。



Prerequisites
- Houdini 19.5.435
- Aelib - SVG書き出しに使用
- Python - Bayer行列の生成に使用
Approach
ワークフロー
全体の流れとしては、画像入力 → ピクセルグリッド生成 → ディザリング処理 → ジオメトリまたは画像として出力、という構成になっている。
Bayer行列の生成
Bayer行列はPythonで再帰的に生成している。再帰的な定義を使うことで任意サイズの行列に対応できるようにしてある。
カラーディザリング
カラー出力については、入力画像のRGB各チャンネルに対して個別にディザリングを適用している。チャンネルごとに閾値判定を行い、それぞれの結果を合成することでカラーのディザリング画像を得ている。
カスタムディザリング
標準的なBayer行列によるディザリングに加えて、任意のグレースケール画像を閾値マトリクスとして使えるカスタムディザリング機能も実装している。Bayer行列の代わりに好きな画像パターンを閾値として使えるので、一般的なOrdered Ditheringとは異なる見た目のパターンを作ることができる。
なぜHoudiniか
Houdiniを選んだ理由は単純で、普段から使い慣れているということと、プロシージャルなワークフローでパラメータを変えながらインタラクティブに実験できるという利点があったため。
Experiments
Bayer行列サイズの変更
Bayer行列のサイズを変えることで、ディザリングの粒度を調整できる。行列サイズが小さいと粗く、大きくすると細かいグラデーション表現になる。
カスタムパターンによる閾値マトリクス
この機能が一番面白かったところで、閾値マトリクスに使う画像パターンを変えることで、通常のOrdered Ditheringでは見られないようなパターンが生まれる。例えば特定の列だけに色がついたり、チェッカー模様の上にパターンが現れたりと、行列パターン次第でかなり自由な表現が可能になる。
ただし、閾値マトリクスのパターンから最終的な出力結果を事前に想像するのは難しい。どういう画像を入れるとどういう結果になるかは、実際に試してみないとわからない部分が多く、基本的にトライアンドエラーで進めることになる。
Findings
- カスタム閾値マトリクスを使うことで、あまり見かけないディザリングパターンを見つけることができた。通常のBayer行列では得られない表現の幅がある
- 閾値マトリクスのパターンから出力結果を頭の中でシミュレーションするのは想像以上に難しく、直感が通用しない場面が多い。結局は手を動かして確かめるしかない
- リソグラフ印刷との相性がよく、ディザリングパターンがリソグラフ特有のインクの質感とうまく合う
- 技術的な実装自体には特に苦労した点はなく、Houdiniとの組み合わせでスムーズに進められた
(J.H.)
展示場の壁面に敷き詰めたポスター群は、同じサブピクセルのaをこのツールを用いて、解像度等の設定を変えてSVG出力されたものが使われている。荒くてミニマルなほうが好むといった方や、細かくテクスチャーが感じられるほうが良いという声など、来場者ごとにリアクションが異なったのも記憶に残っている。また、これらのポスターは個別の注文を受け付けて、展示と同じ形で額装して販売も行った。いただいたオーダーの中では、ちょうど中間あたり4 or 5番目の解像度のポスターが特に人気があったのが印象的だった。 (T.Y.)





Credits
プログラミング: Junichiro Horikawa
企画・制作: Junichiro Horikawa, Sagara Sonoka, Taro Yumiba
Last updated: 2026-07-19
