matlab修改图片位深度_MATLAB图像处理的二值化阈值分割问题

I=imread('C:\Users\陈赫\Desktop\二值化1\1.tif');

figure,imshow(I)

[x,y]=size(I);                % 求出图象大小

b=double(I);

z0=max(max(max(I)));                   % 求出图象中最大的灰度

z1=min(min(min(I)));                   % 最小的灰度

T=(z0+z1)/2;                      % T赋初值,为最大值和最小值的平均值

TT=0;                             %TT赋初值

S0=0.0; n0=0.0;                       %为计算灰度大于阈值的元素的灰度总值、个数赋值

S1=0.0; n1=0.0;                       %为计算灰度小于阈值的元素的灰度总值、个数赋值

allow=50;                       % 新旧阈值的允许接近程度

d=abs(T-TT);

count=0;                         % 记录几次循环

while(d>=allow)                 % 迭代最佳阈值分割算法

count=count+1;

for i=1:x,

for j=1:y,

if I(i,j)>=T,

S0=S0+b(i,j);

n0=n0+1;

end

if I(i,j)

S1=S1+b(i,j);

n1=n1+1;

end

end

end

T0=S0/n0;

T1=S1/n1;

TT=(T0+T1)/2;            %在阈值T下,迭代阈值的计算过程

d=abs(T-TT);

T=TT;

end

T

i1=im2bw(I,T/255);          % 图像在最佳阈值下二值化

figure,imshow(i1)

i2=bwperim(i1);         % 图像细化过程

figure,imshow(i2)

程序运行完后出现如下报错

错误使用 im2bw>parse_inputs (line 115)

IM2BW: Threshold luminance LEVEL has to be a non-negative number between 0 and 1.

出错 im2bw (line 38)

[A,map,level] = parse_inputs(varargin{:});

请问大家这是什么问题??

一下是图片详细信息

Filename: 'C:\Users\陈赫\Desktop\二值化1\1.tif'

FileModDate: '13-1月-2017 13:05:16'

FileSize: 574384

Format: 'tif'

FormatVersion: []

Width: 600

Height: 600

BitDepth: 16

ColorType: 'grayscale'

FormatSignature: [73 73 42 0]

ByteOrder: 'little-endian'

NewSubFileType: 0

BitsPerSample: 16

Compression: 'PackBits'

PhotometricInterpretation: 'BlackIsZero'

StripOffsets: [1x47 double]

SamplesPerPixel: 1

RowsPerStrip: 13

StripByteCounts: [1x47 double]

XResolution: 72

YResolution: 72

ResolutionUnit: 'Inch'

Colormap: []

PlanarConfiguration: 'Chunky'

TileWidth: []

TileLength: []

TileOffsets: []

TileByteCounts: []

Orientation: 1

FillOrder: 1

GrayResponseUnit: 0.0100

MaxSampleValue: 65535

MinSampleValue: 0

Thresholding: 1

Offset: 573818

你可能感兴趣的:(matlab修改图片位深度)