-1

動的しきい値を作成しようとしていますが、いくつかのエラーが表示されます。私はこのコードから適応しようとしています: http://www.inf.ed.ac.uk/teaching/courses/ivr/lectures/ivr5hand.pdf

function [Output ] = dinamicthresh()

[filename,pathname] = uigetfile('*.bmp; *.jpg', 'Please select an image file');     


I=fullfile (pathname,filename); 


I=imread(I);


I=rgb2gray(I);


I=im2double(I);

[H,W]= size(I);
Output= zeros(H,W);

halfH=round(H/2);
halfW=round(W/2);

for i= H:H
for j = W:W
    C = I(i-halfH:i+halfH,j-halfW:j+halfW);
    adaptative_thresh = mean(mean(C)) - 12;
          if I(i,j) < adaptative_thresh 
        Output(i,j)= 1;
            else 
        Output(i,j)= 0;
    end
end
end

subplot(1,2,1);imshow(I);title('Original Image');
subplot(1,2,2);imshow(Output);title('Adaptive Thresholding');

end
4

1 に答える 1

0

しきい値処理アルゴリズムは、各ピクセルとローカル平均の差を特定のしきい値と比較します。

このタスクは、Matlab で を使用して、より簡単な方法で実行できますfilter2

たとえば、この画像では:

ここに画像の説明を入力

% --- Parameters
w = 20;
h = 20;
th = 12;

% --- Load image
Img = double(rgb2gray(imread('Img.png')));

% --- Get the locally-averaged image
Mean = filter2(fspecial('average', [h w]), Img);

% --- Get thresholded image
BW = (Img-Mean)>th;

% --- Disply result
imshow(BW)

次の結果が得られます。

ここに画像の説明を入力

もちろん、パラメータをいじって、このコードを画像に適合させることができます。

  • w平均化ボックスの幅
  • h平均化ボックスの高さ
  • th平均値との差の閾値です。

一番、

于 2015-03-03T20:02:52.600 に答える