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

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

新規登録して質問してみよう
ただいま回答率
85.46%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

Q&A

解決済

1回答

707閲覧

セグメンテーション結果の評価について

nil0

総合スコア6

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

0グッド

0クリップ

投稿2021/07/08 10:11

semantic segmentationによって分類した結果を,混同行列にて示したいと考えております.
準備段階として,2つの画像を比べ,同じ位置にあるピクセルが同じ色であれば,TPに1を足していく,といったコードの作成を試みております.

例として,以下のような画像があったと仮定します.
この画像のうち,RGBが255,0,0のところをTrue,それ以外をFalseとし,両画像の同じ位置でTrueとなった場合,TPに1を足そうと考えています.

python

1img_correct = np.array([[[ 0, 50, 20], [255, 0, 0]], 2 [[255, 0, 0], [ 0, 100, 10]], 3 [[ 0, 0, 0], [ 10, 100, 10]]]) 4img_test = np.array([[[255, 0, 0], [255, 0, 0]], 5 [[ 0, 100, 100], [255, 0, 0]], 6 [[ 0, 0, 0], [ 10, 200, 200]]])

各ピクセルにおけるTrue/Falseを知るために,np.whereを使って以下のように書いてみたのですが,すべての要素についてそれぞれTrue/Falseの判定が出てしまいます.

python

1correct_new = np.where(img_correct==[255,0,0], True, False) 2 3[[[False False False] 4 [ True True True]] 5 6 [[ True True True] 7 [False False False]] 8 9 [[False True True] 10 [False False False]]]

このように,ピクセルごとの結果を示すには,どのような関数を使用すれば良いでしょうか.
また,最終的に扱う画像の枚数が多いので,できる限り処理を軽くしたいのですが,他の方法でもっと処理を軽くできるものがあれば,教えていただけたらと思います.

python

1[[[False] [True]] 2 [[True] [False]] 3 [[False] [False]]]

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

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

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

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

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

guest

回答1

0

ベストアンサー

ご質問はよくわかりませんが、おそらく以下のような計算をしたいのではないでしょうか。

python

1>>> import numpy as np 2>>> img_correct = np.array([[[ 0, 50, 20], [255, 0, 0]], 3... [[255, 0, 0], [ 0, 100, 10]], 4... [[ 0, 0, 0], [ 10, 100, 10]]]) 5>>> 6>>> TP = (img_correct==[255,0,0]).all(axis=2).sum() 7>>> print(TP) 82

投稿2021/07/08 10:41

ppaul

総合スコア24666

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

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

nil0

2021/07/08 11:11

コメントありがとうございます. おかげさまで,以下のように書くと各ピクセルがTrue(255,0,0)かFalseかを知ることができ,また,2つの画像内で同じ位置にTrueがあった場合が何回起こったかを出力することができました. correct_new = (img_correct==[255,0,0]).all(axis=2) test_new = (img_test==[255,0,0]).all(axis=2) TP = correct_new & test_new print(TP.sum()) 今回,correct_newとtest_newの両方でTrueとなった回数をTPとしたかったので,&で繋ぎましたが,correct_newがFalse,test_newがTrueとなった場合やその逆の場合,両方Falseだった回数はどのようにカウントすれば良いでしょうか.
nil0

2021/07/08 11:16

(correct_new == False) & (test_new == True)といった条件を設けることで解決しました. 失礼いたしました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問