Image Matlab-动态阈值
我试图做一个动态阈值,但它出现了一些错误。我正试图根据以下代码进行调整:Image Matlab-动态阈值,image,algorithm,matlab,threshold,adaptive-threshold,Image,Algorithm,Matlab,Threshold,Adaptive Threshold,我试图做一个动态阈值,但它出现了一些错误。我正试图根据以下代码进行调整: function[Output]=dinamicsthresh() [文件名,路径名]=uigetfile('*.bmp;*.jpg','请选择一个图像文件'); I=完整文件(路径名、文件名); I=imread(I); I=RGB2灰色(I); I=2倍(I); [H,W]=尺寸(I); 输出=零(H,W); halfH=圆形(H/2); 半宽=圆形(宽2); 对于i=H:H 对于j=W:W C=I(I-halfH:I
function[Output]=dinamicsthresh()
[文件名,路径名]=uigetfile('*.bmp;*.jpg','请选择一个图像文件');
I=完整文件(路径名、文件名);
I=imread(I);
I=RGB2灰色(I);
I=2倍(I);
[H,W]=尺寸(I);
输出=零(H,W);
halfH=圆形(H/2);
半宽=圆形(宽2);
对于i=H:H
对于j=W:W
C=I(I-halfH:I+halfH,j-halfW:j+halfW);
适应性_阈值=平均值(平均值(C))-12;
如果I(I,j)
阈值算法将每个像素和局部平均值之间的差值与给定阈值进行比较
在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
最好的,您能提供一些关于您收到的错误的信息,以及代码的哪一部分导致了错误吗?您的
for
循环的范围为H:H
和W:W
。。。每一个都执行一次。这看起来很可疑。我期望类似于1:H
和1:W
的东西。
% --- 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)