画像を二値化し、画像​内の曲線のプロットデ​ータを読み込むことは​可能でしょうか。

11 次查看(过去 30 天)
rocket rok
rocket rok 2020-9-8
评论: rocket rok 2020-9-14
画像を二値化し、画像内の曲線(黒い線)をプロットとして抽出する方法を模索しています。
何か良い方法はありますでしょうか?
(先行研究と同じ作業を行いたいのですが、方法が分からず、困っております。
先行研究:https://www.semanticscholar.org/paper/Influence-of-Interface-Roughness-on-the-Fatigue-of-Eriksson-Sj%C3%B6str%C3%B6m/7503cd1099b7e3dc872d792867dc4c79c82dcfee)
  2 个评论
Hiroyuki Hishida
Hiroyuki Hishida 2020-9-8
编辑:Hiroyuki Hishida 2020-9-8
こんばんは。
TBCの断面ミクロ評価ですかね?元論文拝見しましたが、あまりはっきり記載がないのですね。 となると、実際的には、閾値をどう決めるかはご判断いただく必要があると思いますが、処理はだいたいこうなるかと思います。
  1. 閾値処理 graythreshやimbinarizeなど
  2. 母材側の穴埋め処理 imfillなど
いかがでしょうか
菱田
rocket rok
rocket rok 2020-9-14
ありがとうございます。
参考にさせていただきます。

请先登录,再进行评论。

采纳的回答

Kenta
Kenta 2020-9-8
こんにちは、論文のほうも教えていただきありがとうございます。
今回の図の場合だと、1)白い部分、2)灰色の部分、3)黒い部分(線になっている今回の関心領域)になっていて、
単に大津法で2値化をするとなると、1と2&3というグループに分かれるので、1と2&3を分けて、さらに2と3で分けるというような2段階の解析が望ましい気がします。
例えば上が単に大津の2値化をしたもので、下が今回作った例です。ただ、先行研究とやり方が異なると、今回の質問の趣旨にはそぐわず、あまり役立たないかもしれません。何か役に立てば幸いです。
clear;clc
I=imread('image.jpeg');
figure;imshow(I)
gray=rgb2gray(I);
% 近傍ピクセルの強度をもとに2値化
bw1=imbinarize(gray,'adaptive','ForegroundPolarity',"dark");
figure;imagesc(bw1)
idx=find(bw1==0);
fore=gray(idx);
% 大津の2値のためにヒストグラム計算
[counts,x] = imhist(fore,16);
% 各頻度の表示
stem(x,counts)
% 大津の2値化の閾値決定
T = otsuthresh(counts);
% 大津の2値化の実行
bw2 = ~imbinarize(gray,T);
% 面積によるノイズ除去
bw_final = bwpropfilt(bw2, 'Area', [30, Inf]);
% 表示
figure;imshowpair(I,uint8(bw_final*255))
  1 个评论
rocket rok
rocket rok 2020-9-14
ご回答ありがとうございます。
おっしゃる通り、複数回に湧ける必要がありそうです。
頂いたcodeも参考にし、やってみます。
ありがとうごさいました。

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!