質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

3575閲覧

2値化したい

gotchcuru

総合スコア29

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

2クリップ

投稿2016/05/11 14:33

編集2016/05/12 06:54

SwiftでOpenCVやGPUImageなどの外部ライブラリを使わずに、
画像を2値化したいのですが実現可能でしょうか?

お知恵をお借りできれば幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

カスタムフィルタを作りましょう。シェーダはGLSLなので、glsl+thresholdとかglsl+binarizationなどで検索すれば見つかります。

シェーダー

例えば、これとかを参考に書き換えると、

kernel vec4 threshold(__sample image, float threshold) { vec3 col = image.rgb; float bright = 0.33333 * (col.r + col.g + col.b); float b = mix(0.0, 1.0, step(threshold, bright)); return vec4(vec3(b), 1.0); }

別のところで見つけたやつだと、

kernel vec4 threshold(__sample image, float threshold) { float luma = dot(image.rgb, vec3(0.2126, 0.7152, 0.0722)); return vec4(vec3(step(threshold, luma)), 1.0); }

できた

こんな感じになりました。(threshold=0.5)
threshold1 threshold2

微妙に違います。

さらに

ディザリングもあります。
GLSL 8x8 Bayer matrix dithering

投稿2016/05/12 06:28

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gotchcuru

2016/05/12 06:39

CIFilterを自作する方法があったんですね! ありがとうございます。こちらの方法でがんばってみますm(_ _)m
guest

0

ライブラリ一切使わず画像処理プログラムを作ったことがありますが基本的にはRGB値をもつ構造体を用意して2次元配列(擬似でも可)に帰着出来ればグレースケール変換を噛ませて閾値で画素値Maxと0で2値化出来ます。
メディアンフィルターなどフィルターも実装が簡単なものが結構あるので頑張ればライブラリを使わないで出来ないこともないです。
面倒なのは圧縮された画像に対応するのは復号アルゴリズムを入れる必要があるのでライブラリ経由の方が手っ取り早いかも知れないです。
また当たり前ですがjpegなどの不可逆圧縮形式の画像は圧縮後の画像の二値化しかできません。また,二値化画像の保存形式をbmp以外にしたい場合は圧縮アルゴリズムなども再度掛け直す必要もあるかと思います。ほとんどの場合既に圧縮された画素値を変換することになるので更に圧縮したデータへの変換噛ませる必要もないかもしれませんが。

投稿2016/05/11 20:42

編集2016/05/11 20:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問