4ヶ月間かけてのんびり勉強したJavaで、画像処理系ツール作ってます。

アルファ値対応で、対応形式はJavaTM Image I/Oで対応してるのならなんでも。
多分pngとjpegは対応してるらしい。うちの環境だとさらにbmpやらgifに対応してたりする。

GUIについて

今更ながらAWTで作るんじゃなかった。
動作軽いし、そう大きなもの作らないからいいじゃんって思ってたらいくつも壁がある。
・ステータスバー作れない。
・「&F」とか「ファイル(F)」みたいなのが作れない。(これが致命的。AWTはキーボードの人は無視かよ。)
・ダイアログで「全てのファイル(*.*)」しか使えない。(Windowsのみ対応していないらしい。ちゃんと作ってほしい)
・バーがスクロールバーしかない。(選択用のバーがほしかった)
といろいろ。

Swing使えばよかった。
ただ今更書き換えるのも面倒。

JavaにてOSのパーツ利用したGUI作るのHSPよりは簡単、
ただボタンはっつけるの位置関係とかややこしかった。

対応した機能
「色」ではコントラスト・ガンマ補正・ホワイトバランス・色相・彩度・明度
「フィルタ」ではソフト(局所・大域・ガウス)・シャープ(シャープ・アンシャープ)・面を刻む・メディアンフィルタ・エッジ保持フィルタ

補足

面を刻むってのはお馴染みのkuwahara filter
エッジ保持フィルタってのは、選択的局所平均化法ってやつ。(selective local color averaging)

今回、アルゴリズムを初めて実装したのはホワイトバランスとアンシャープってやつ。

ホワイトバランス
普通に、お馴染み濃度変換で作れた。
Komin’s photos on the netさんのデジタルカメラ撮影画像のホワイトバランス調整
ここが参考になりました。

アンシャープ
Canonのフォトレタッチの説明をみて実装してみた。
フィルタ処理と演算処理みたいなもので作れる。

公開したいんだけど、難読化の方法が分からないという。
Eclipseで開発してるんだけど、そのままエクスポートする時に自動的に難読化してくれる方法ってないのかな。

知ってたら誰か丁寧に教えてください^^
exe化するとアイコンへファイルのD&Dできるから便利。


完成した画像処理のツールは、こちらから試すことが出来ます。

関連記事

  • ビューア開発 – 減色とか追加してみました。ビューア開発 – 減色とか追加してみました。 昨日、メディアンカット実装がんばりました! そして、やっぱりipmpackのほうメディアンカットが微妙にバグ持ちでした。 作り直した結果しっかり1色~256色とかどんな色までにも減色できるようになりました。 というか今までRGBを555の15bitsで計算してたけど、 別に16bits内におさめるとかそういう話じゃないから普通に増やしても問題なかった。 […] Posted in ツール制作
  • ビューア開発 – バイラテラルフィルタ追加しましたビューア開発 – バイラテラルフィルタ追加しました 前々から追加追加しようと思って、初めて作ってみた。 日本語の資料がtpotさんのバイラテラルフィルタしかなくて、勉強するのが大変でした。 海外のサイトはもっとよくわかんない謎の式だらけ。 要約すると、バイラテラルフィルタってのは、注目画素の輝度と、フィルタ処理する時の近傍画素の輝度の差(距離)を マイナスの係数をかけて、指数関数の中れたもの を A […] Posted in ツール制作
  • ビューア開発 – 印刷機能やドロップシャドウ機能などの追加ビューア開発 – 印刷機能やドロップシャドウ機能などの追加 久しぶりに更新。 っていっても3日しかたってないか^^; 追加点 ・設定ファイルで前回の位置や、設定を自動保存。 ・適当にページ設定・印刷追加。印刷のdpiとか設定できない。 ・露光量のアルゴリズムをほんのちょっとだけ修正。 ・マクロに、大正写真・色やけ・グロー・ドロップシャドウ追加。 ・背景にチェック追加。 ・大域平均値フィルタとメディアンフィルタに、他 […] Posted in ツール制作
  • ビューア開発 – ピクセレート対応などビューア開発 – ピクセレート対応など ストローク本格的に作るとなると、ペンとか考えないといけない。 ビューアだから、もちろんペン機能とかないから、そこまで作るとなんかうん。 というわけで、ピクセルをテーブル使って移動させるいつもの手法でそれっぽいの作りました。 ライングラスっていう機能です。45度で線引けばストロークみたいになる。 角度や幅も調節できます。 あと拡散もついでに作りました。 […] Posted in ツール制作
  • ビューア開発 – トリミングとリサイズ追加ビューア開発 – トリミングとリサイズ追加 よくトリミングできるソフトで、縦幅・横幅を手入力ってのがあるけど、自分的には使いづらかった。 やっぱスライダー+スピンボタンが最強だと思う。 うん。でもAWTにはどちらもないんですよね^^(ってSwingにもないじゃん) しょうがないから、スクロールバーで代用してみた。 やっぱり、こういう目で見えると直感的に操作できるからうれしいと思う。 それと、リサイズにはア […] Posted in ツール制作
  • Bresenhamアルゴリズムで線分の計算は早いのかなBresenhamアルゴリズムで線分の計算は早いのかな 以前、直線を描くのにこんなのを作った。 特に工夫点もない、素直な方法である。 #module "linem" #deffunc line2 int line_x1,int line_y1,int line_x2,int line_y2 line_xabs = abs(line_x1-line_x2) line_yabs = […] Posted in アルゴリズム