您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页matlab中imshow(I,[low,high])的等效函数

matlab中imshow(I,[low,high])的等效函数

来源:爱玩科技网


matlab中imshow(I,[low,high])的等效函数

在matlab中,imshow用于显示图像,而指令imshow(I,[low,high])是将原图像中灰度值小于等于low的像素点置灰度值为0,原图像中灰度值大于等于high的像素点置灰度值为255,其余通过特定的映射进行变换。

①初始以为这个特定的映射只是这样:在low和high之间的像素点的灰度值保留原值不变。故而采用如下等价函数验证:

function L = M_binaryzation(I,low,high )

%L = M_binaryzation(I,low,high )

% 这是imshow(I,[low,high])的等价函数

[row,col]=size(I);

L=uint8(zeros(row,col));

for i=1:row

for j=1:col

if I(i,j)>=high

L(i,j)=255;

elseif I(i,j)<=low

L(i,j)=0;

else

L(i,j)=I(i,j);%原灰度值映射

end

end

end

end

在工作空间上运行如下代码:

I=imread('cameraman.tif');

L=M_binaryzation(I,100,200);

figure(1);imshow(I,[100,200]);xlabel('imshow(I,[100,200])');

figure(2);imshow(L);xlabel('imshow(L)');

得到如下结果:

显然两幅图并不一致,故而,imshow(I,[low,high])里面的映射并非是直接使用原灰度值。

②考虑到一副灰度图像其一共可取有0-255共256个灰度值,而经过上述变换,只能取0,low~high,255一共N=high-low+1个灰度值(N<256),故而,可考虑这种映射是将low和high之间的灰度值映射到0~255这个空间上,使其可取256个灰度值。

如有一点的灰度值为105(设low=100,high=200),则映射到0~255上,该点的灰

255(105100)12200100-1度值为。

用如下等价函数验证:

function L = M_binaryzation(I,low,high )

%L = M_binaryzation(I,low,high )

% 这是imshow(I,[low,high])的等价函数

[row,col]=size(I);

L=uint8(zeros(row,col));

for i=1:row

for j=1:col

if I(i,j)>=high

L(i,j)=255;

elseif I(i,j)<=low

L(i,j)=0;

else

L(i,j)=floor((I(i,j)-low)*(255/(high-low-1)));%灰度空间扩展映射

end

end

end

end

在工作空间上运行如下代码:

I=imread('cameraman.tif');

L=M_binaryzation(I,100,200);

figure(1);imshow(I,[100,200]);xlabel('imshow(I,[100,200])');

figure(2);imshow(L);xlabel('imshow(L)');

得到如下结果:

显然,第②种映射方法得出来的图像结果与imshow(I,[100,200])的结果一致,

结论:imshow(I,[low,high])显示图像时是将原图像中灰度值小于等于low的像素点置灰度值为0,原图像中灰度值大于等于high的像素点置灰度值为255,其余通过特定的映射进行变换。映射方式是将low~high上的灰度值线性扩展到0~255内。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务