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

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

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

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

Q&A

解決済

1回答

1858閲覧

HE染色した画像をブロブ検出したい

kinokoman

総合スコア2

Python

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

0グッド

0クリップ

投稿2021/10/10 05:47

編集2021/10/10 06:02

前提・実現したいこと

HE染色された画像をブロブ検出したいと考えています。
ライブラリを用いて、3種類の方法で検出したいと考えているのですが、DoHのところでエラーが発生します。

ブロブ検出機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

ValueError: Buffer dtype mismatch, expected 'double_t' but got 'float'

該当のソースコード

Python

1from math import sqrt 2from skimage import util 3from skimage.feature import blob_dog, blob_log, blob_doh 4from skimage.color import rgb2gray 5import matplotlib.pyplot as plt 6 7image = plt.imread('f9dd57a42e7747e256d484405b3e1d0a.png') 8image_gray = rgb2gray(image) 9image_gray = util.invert(image_gray) 10 11"""logによる検出""" 12blobs_log = blob_log(image_gray, max_sigma=30, num_sigma=10, threshold=.1) 13 14# Compute radii in the 3rd column. 15blobs_log[:, 2] = blobs_log[:, 2] * sqrt(2) 16 17"""Dogによる検出""" 18blobs_dog = blob_dog(image_gray, max_sigma=30, threshold=.1) 19blobs_dog[:, 2] = blobs_dog[:, 2] * sqrt(2) 20 21"""DoHによる検出""" 22blobs_doh = blob_doh(image_gray, max_sigma=30, threshold=.01)###ここでエラーが発生します### 23#blobs_list = [blobs_log, blobs_dog, blobs_doh] 24 25"""結果""" 26blobs_list = [blobs_log, blobs_dog, blobs_doh] 27colors = ['yellow', 'lime', 'red'] 28titles = ['Laplacian of Gaussian', 'Difference of Gaussian', 29 'Determinant of Hessian'] 30sequence = zip(blobs_list, colors, titles) 31 32fig, axes = plt.subplots(1, 3, figsize=(9, 3), sharex=True, sharey=True) 33ax = axes.ravel() 34 35for idx, (blobs, color, title) in enumerate(sequence): 36 ax[idx].set_title(title) 37 ax[idx].imshow(image_gray,cmap="gray") 38 for blob in blobs: 39 y, x, r = blob 40 c = plt.Circle((x, y), r, color=color, linewidth=1, fill=False) 41 ax[idx].add_patch(c) 42 ax[idx].set_axis_off() 43plt.tight_layout() 44plt.savefig('plot_blob_invert.png',dpi=100) 45plt.show()

試したこと

どこを直したらいいのかわからず、止まっています。

補足情報(FW/ツールのバージョンなど)

ファイルはこれです。
イメージ説明

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

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

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

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

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

coco_bauer

2021/10/10 05:57

「ValueError: Buffer dtype mismatch, expected 'double_t' but got 'float'」というエラーは、プログラムのどの部分で発生するのですか? "DoHのところ"と言われても判りかねます。
kinokoman

2021/10/10 06:04

返信ありがとうございます。 プログラム中にも記載させていただいたのですが、 blobs_doh = blob_doh(image_gray, max_sigma=30, threshold=.01) この部分で発生しています。
guest

回答1

0

ベストアンサー

イメージ説明

ValueError: Buffer dtype mismatch, expected 'double_t' but got 'float'

倍精度浮動小数点が欲しかった、という話のようです。明示的にdoubleとしたら動きました。

Python3

1from math import sqrt 2from skimage import util 3from skimage.feature import blob_dog, blob_log, blob_doh 4from skimage.color import rgb2gray 5import matplotlib.pyplot as plt 6 7image = plt.imread('A.png') 8image_gray = rgb2gray(image) 9image_gray = util.invert(image_gray) 10 11"""logによる検出""" 12blobs_log = blob_log(image_gray, max_sigma=30, num_sigma=10, threshold=.1) 13 14# Compute radii in the 3rd column. 15blobs_log[:, 2] = blobs_log[:, 2] * sqrt(2) 16 17"""Dogによる検出""" 18blobs_dog = blob_dog(image_gray, max_sigma=30, threshold=.1) 19blobs_dog[:, 2] = blobs_dog[:, 2] * sqrt(2) 20 21"""DoHによる検出""" 22# blobs_doh = blob_doh(image_gray, max_sigma=30, threshold=.01)###ここでエラーが発生します### 23blobs_doh = blob_doh(image_gray.astype("double"), max_sigma=30, threshold=.01)###ここでエラーが発生します### 24 25#blobs_list = [blobs_log, blobs_dog, blobs_doh] 26 27"""結果""" 28blobs_list = [blobs_log, blobs_dog, blobs_doh] 29colors = ['yellow', 'lime', 'red'] 30titles = ['Laplacian of Gaussian', 'Difference of Gaussian', 31 'Determinant of Hessian'] 32sequence = zip(blobs_list, colors, titles) 33 34fig, axes = plt.subplots(1, 3, figsize=(9, 3), sharex=True, sharey=True) 35ax = axes.ravel() 36 37for idx, (blobs, color, title) in enumerate(sequence): 38 ax[idx].set_title(title) 39 ax[idx].imshow(image_gray,cmap="gray") 40 for blob in blobs: 41 y, x, r = blob 42 c = plt.Circle((x, y), r, color=color, linewidth=1, fill=False) 43 ax[idx].add_patch(c) 44 ax[idx].set_axis_off() 45plt.tight_layout() 46plt.savefig('plot_blob_invert.png',dpi=100) 47plt.show() 48

投稿2021/10/10 13:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kinokoman

2021/10/10 17:36

ありがとうございます! 無事に解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問