matlab完成分段函数的灰度变换

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图像反转程序:

I=imread('pout.tif');

JJ=imadjust(I,[0 1],[1 0]); imshow(JJ,[]);

figure;

imshow(I,[]);

对数变换程序:

I=imread('pout.tif'); imshow(I);

Image=log(1+double(I)); figure(2),imshow(I,[])

伽马变换程序:

A=imread('pout.tif');

x=0:255;

a=90,b=1.5,c=0.008;

B=b.^(c.*(double(A)-a))-1; y=b.^(c.*(x-a))-1;

subplot(2,2,1)

imshow(A)

subplot(2,2,2)

imhist(A)

subplot(2,2,3)

imshow(B)

subplot(2,2,4)

imhist(B)

figure,plot(x,y)

分段线性变换程序:

b=imread('pout.tif');

f0=0;g0=0;

f1=10;g1=30;

f2=220;g2=180;

f3=255;g3=255;

figure,plot([f0,f1,f2,f3],[g0,g1,g2,g3]); r1=(g1-g0)/(f1-f0);

b1=-r1*f0+g0;

r2=(g2-g1)/(f2-f1);

b2=-r2*f1+g1;

r3=(g3-g2)/(f3-f2);

b3=-r3*f2+g2;

axis([0 255 0 255]);

[m,n]=size(b);

h=double(b);

figure,imshow(mat2gray(h));

for i=1:m

for j=1:n

t=h(i,j);

g(i,j)=0;

if((t>=f0)&&(t<=f1))

g(i,j)=r1*t+b1;

else

if((t>=f1)&&(t<=f2))

g(i,j)=r2*t+b2;

else

if((t>=f2)&&(t<=f3))

g(i,j)=r3*t+b3;

end

end

end

figure,imshow(mat2gray(g));

b=imread('e:\b.bmp');%

i=rgb2gray(b); %

di=double(i);

imhist(i);

a=min(min(di));

b=max(max(di));

c=120.0;d=150.0;

a1=0.0;b1=255.0;

c1=30.0;d1=171.0;

n1=find(di>=a&di

n2=find(di>=c&di

n3=find(di>=d&di

di2=di;

di2(n1)=(di(n1)-a)*(c1-a1)/(c-a)+a1;

di2(n2)=(di(n2)-c)*(d1-c1)/(d-c)+c1;

di2(n3)=(di(n3)-d)*(b1-d1)/(b-d)+d1;

i2=uint8(di2);

subplot(221),imshow(i);

subplot(222),imshow(i2);

subplot(223),imhist(i);

subplot(224),imhist(i2);

f=imread('cameraman.tif'); %读入图像,自己改个图像,不要雷同啊

[M,N]=size(f);

g=zeros(M,N);

for i=1:M

for j=1:N

if f(i,j)<=f(80,80) %f(80,80)可以改为某个介于【0,255】 g(i,j)=4*f(i,j); %g(x,y)=K*f(i,j)+b!K,B值可以取合理任意值

elseif f(i,j)<=f(200,200)%f(200,200)可以改为某个介于【0,255】 g(i,j)=5*f(i,j)+2; %同上

elseif f(i,j)<=f(M,N) %f(M,N)可以改为某个介于【0,255】

g(i,j)=-1*f(i,j)+2; %同上

end

end

end

h=mat2gray(g);

imshow(h);

相关文档
最新文档