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

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

新規登録して質問してみよう
ただいま回答率
85.37%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

194閲覧

Pythonの画像処理を使って、しわを検出・色塗り画像を生成するアルゴリズムを考えてほしい

kkjiji

総合スコア40

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2024/11/08 14:18

編集2024/11/09 04:02

実現したいこと

Pythonの画像処理ライブラリOpenCVを使って、シワを検出・色塗りした画像を生成するコードを作成したいと考えています。
ジャストアイデアでも良いですし、この技術使える・このアルゴリズムは参考になるかも程度でも嬉しいです。とにかくシワのみを検出するアルゴリズムを考えたいです。
画像は以下のようなイメージのものです。

イメージ説明
イメージ説明

発生している問題・分からないこと

シワを検出する良いアルゴリズムが思いつかない。

以下のコードで作ったもの
大きいシワを対象に取ってみた。
イメージ説明

該当のソースコード

python

1import numpy as np 2import cv2 3 4# 画像読み込み 5img = cv2.imread('何か.png',0) 6clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8)) 7cl1 = clahe.apply(img) 8 9# マスク画像作成 10height = img.shape[0] 11width = img.shape[1] 12center_w = height//2 13center_h = width//2 14R = 2 15 16mask = np.ones([height, width]) 17 18for i in range(0, height): 19 for j in range(0, width): 20 if (i-center_w)*(i-center_w) + (j-center_h)*(j-center_h) < R*R: 21 mask[i][j] = 0 22 23# フーリエ変換 24f = np.fft.fft2(cl1) 25fshift = np.fft.fftshift(f)*mask 26magnitude_spectrum = 20*np.log(np.abs(fshift)) 27 28f_ishift = np.fft.ifftshift(fshift) 29img_back = np.fft.ifft2(f_ishift) 30 31img_real = np.real(img_back) 32img_real = 255 * (img_real - img_real.min()) / (img_real.max() - img_real.min()) 33img_uint8 = img_real.astype(np.uint8) 34 35_, thresh_img = cv2.threshold(img_uint8, 110, 255, cv2.THRESH_BINARY) 36 37# 以下、ノイズ除去として一定の面積以下を削除など入れようと考えている。

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

現状考えている内容は、
・適用的ヒストグラム平坦化:シワを強調させるため
・フーリエ変換、ハイパスフィルタ:シワのエッジ抽出のため
・ノイズ除去

のような流れでうまくいかないか模索中。

補足

参考サイト
https://qiita.com/syukan3/items/bb44905bafd85b67789d
https://vigne-cla.com/25-2/ (画像はこちらを拝借)
https://qiita.com/tanaka_benkyo/items/bfa35e7f08faa7b7a985
https://qiita.com/fugunoko/items/41c33ca163c7bb52d283

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

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

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

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

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

meg_

2024/11/09 02:14

> とにかくシワのみを検出するアルゴリズムを考えたいです。 「シワ」とは布の皺のことですか? > 以下、即席で作ったコードなので動かないかも。 動作確認結果はいかがでしょうか?
kkjiji

2024/11/09 03:13

>「シワ」とは布の皺のことですか? そのとおりです。実際は違うものですが、便宜上似ているものを添付しています。 >動作確認結果はいかがでしょうか? 取れはしますが、シワが小さい方の画像はもっと精度よくしたいなと行った感じでしょうか。 個人的には他にも方法がないか検討している状態です。
meg_

2024/11/09 03:27

> 実際は違うものですが、便宜上似ているものを添付しています。 そうなんですか?回答者は提示された画像で動作確認すると思いますが。「実際は違うもの」は掲載できない事情でもあるんでしょうか。 > 取れはしますが、シワが小さい方の画像はもっと精度よくしたいなと行った感じでしょうか。 追加の情報は本文に追記しましょう。実行結果を載せると他の回答者の参考になるかと思います。
kkjiji

2024/11/09 03:57

>そうなんですか?回答者は提示された画像で動作確認すると思いますが。「実際は違うもの」は掲載できない事情でもあるんでしょうか。 →掲載できないため、別のものを添付しました。提示した画像で動作確認してもらって問題ないです。 今回の質問の目的はあくまでもシワを取るためのアイデアがほしいと思っています。 検証は自分が行うので、シワを取るための技術的なところやアルゴリズムや論文などでも私が知らない知見が得られたら嬉しいというのが本趣旨になります。 >追加の情報は本文に追記しましょう。実行結果を載せると他の回答者の参考になるかと思います。 後ほど載せておきます。
fana

2024/11/13 01:39 編集

質問内容が ぼんやりしすぎている と思えます. 「〇〇をやりたいです.どうしたらいいですか?」というレベルの話では,あなたが現在直面している課題点が我々には不明です. 「シワ」とだけ言われても,何が該当して何は該当しないのかは読み手には全くわかりません. (あまり良い例えではないかもしれませんが,「カメラ画像から障害物を検知したいです!」みたいな話と似ています.「障害物…って何? 何をそう見なして,何をそう見なさないのか?」「実際に相手にするシーンというのは何かしら限定されるのか否か」等々といった具体的な仕様(?とでもいうか)を示さなければ,やるべきことのイメージを共有できないでしょう) また,何やら処理結果のような絵が提示はされていますが,何を情報として示そうとしているのかが伝わりません. これが結果として良いのか良くないのか,この中に何か問題点/課題点が見られるのか否か,etc... という話が全くないため,現状では限りなく情報量がゼロです.
fana

2024/11/13 01:49 編集

勝手に想像するに,本件の場合, 【「シワ」】 と 【「シワ」が全く存在しない状態において存在しえる何らかのテクスチャ】 とをどう見分けるのか? という問題なのか? とか思えます. 仮にそうであれば,問題を論じるには「あり得るテクスチャ」についての言及が必要なのではないかと思います. 例えば,対象が「任意の布地(どんなテクスチャもあり得る)の映像」なのか「特定の布地(テクスチャに関する事前知識がある程度は存在する)の映像」なのか,によって話が変わり得るかもしれませんよね. あなたの中にはそこら辺に関しての前提条件というのが存在するからこそ,それに基づいて「周波数帯でのフィルタ」みたいなことを考えておられるのでしょうけど,そこは他者は知らないことなので,まずそこから説明する必要があるのではないか? っていう.
fana

2024/11/13 01:55 編集

> 技術的なところやアルゴリズムや論文など という話であれば,とりあえず Google Scholar あたりでいろいろと検索してみてはどうでしょう?(Qiita とかじゃなくて) あと,「シワ」とは話が相応に異なるでしょうけども「壁か何かのヒビを見つけたい」みたいな話はたまに見かけるような気もします.そういう話の中にも何かしら参考になる要素が含まれているかもしれません.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問