matlabで画像を処理したい
画像は、しっかりとした背景と2つの標本(上面と下面)で構成されています。上部と下部を分離して2つの画像にするコードがすでにあります。しかし、私がうまくいかない部分は、接着された領域にのみ画像をトリミングすることです(画像の赤いボックス、私は一番上のものだけをマークしました)。ただし、トリミングされた画像は、赤いボックスと同じように長方形である必要があります(黄色の背景は後で破棄できます)。
これはで実行できることは知っていますがimcrop
、これにはユーザーからの手動入力が必要です。ユーザー入力なしでより多くの画像を処理できるように、コードを自動化する必要があります。すべての画像は同じ色になります(接着剤の場合は赤、素材の場合は黒)。
誰かがこれを手伝ってくれますか?
編集:助けてくれてありがとう。次のコードを使用して問題を解決しました。しかし、赤いボックスの右側の黒い部分を取り除くことができませんでした。これは、写真を作成する前にその部分をテープで留めることで修正できます。私が使用したコードは少し奇妙に見えますが、画像の黒い領域をカウントしてパーセンテージを取得することに成功しています。
a=imread('testim0.png');
level = graythresh(a);
bw2=im2bw(a, level);
rgb2=bw2rgb(bw2);
IM2 = imclearborder(rgb2,4);
pic_negative = ait_imgneg(IM2);
%% figures
% figure()
% image(rgb2)
%
% figure()
% imshow(pic_negative)
%% Counting percentage
g=0;
for j=1:size(rgb2,2)
for i=1:size(rgb2,1)
if rgb2(i,j,1) <= 0 ...
& rgb2(i,j,2) <= 0 ...
& rgb2(i,j,3) <= 0
g=g+1;
end
end
end
h=0;
for j=1:size(pic_negative,2)
for i=1:size(pic_negative,1)
if pic_negative(i,j)== 0
h=h+1;
end
end
end
per=g/(g+h)
誰かがコードを改善するためのいくつかの提案を持っているなら、私はそれを聞いてうれしいです。