数字图像处理 实验一 图像的基本运算

实验一 图像的基本运算

一、实验目的

1)掌握点运算和代数运算的算法实现和概念

2)掌握和几何运算的算法实现和概念

2)掌握灰度变换和几何变换的基本方法

3)理解图像灰度直方图的概念

二、实验内容

1)任意选择几幅图像,查看其直方图,说明直方图和图像的对应关系。

2)任意选择几幅图像,对其进行灰度线性变换,结合以下情况分析输入图像和输出图像两者有何变化。

Ø  当斜率a>1时;

Ø  当斜率 a<1时;

Ø  当斜率a1b<0时;

Ø  当斜率a1b>0时;

Ø  当斜率a1b=0时;

Ø  当斜率a-1b=255时;

3)选择几幅图像,对其进行灰度拉伸,选择不同的拉伸参数,观察图像与原图有何不同,总结灰度拉伸的原理。

4)选择几幅图像对其进行几何变换,理解不同变换对图像产生的影响。

三、实验代码、结果、分析

1代码:

I=imread('C:\Users\xxxy\Desktop\1.jpg'); imshow(I)

I=rgb2gray(I); %真彩色图像转换为灰度图像,即灰度化处理

add=[];  tab1=zeros(1,256);

for n=0:255

    X=I==n;      add=[add;sum(sum(X))];

end;  

[a b]=size(I);   final=add/(a*b);

figure; imshow(I);

figure;  bar(0:255,final,'g')

figure; imhist(I)

结果:

                

1-1:原图                                                      1-2:灰度图

            

1-3 直方图                                                        1-4 纵坐标扩大直方图

分析:灰度直方图描述了该灰度级的像素的个数,其横坐标是灰度级,纵坐标是该灰度级出现的概率,eg:灰度值为100的概率可近似看做0.004

2代码

I=imread('C:\Users\xxxy\Desktop\2.jpg');    imshow(I)

y=a*I+b/255;    %线性点运算

figure   subplot(2,2,1);    imshow(y);

 

2-1  原图

a,b值分别如下,及结果图:

[1]a=2;b=10;                             [2]a=0.3;b=1;

             

2-2:a>1                                 2-3a<1

[3]a=1;b=-10;             [4]a=1;b=10;              [5]a=1;b=0;

       

2-4a1b<0        2-5a1b>0          2-6a1b=0

[7]a=-1;b=255;

 

                                               图2-7a-1b=255

分析:

[1] 如果a>1,输出图像的对比度变大,即图像变得更亮

[2] 如果a<1,输出图像的对比度减小,即图像变得更暗

[3] 如果a=1,b<0,输出图像下移,图像显示的更暗

[4] 如果a=1,b>0,输出图像上移,图像显示的更亮

[5] 如果a=1,b=0,输出图像不变,与原图像一样

[6] 如果a=1,b<0,输出图像下移,图像显示的更暗

[7] 如果a<0,b<0,输出图像亮区变暗,暗区变亮

3代码:

I=imread('C:\Users\xxxy\Desktop\3.jpg');imshow(I)

Y=double(I);  %将参数I转为双精度浮点类型

[M,N]=size(Y);

for i=1:M          

    for j=1:N              

        if Y(i,j)<=30                 

            Y(i,j)=I(i,j);             

        else if Y(i,j)<=150                  

                Y(i,j)=(200-30)/(160-30)*(I(i,j)-30)+30;            

            else   Y(i,j)=(255-200)/(255-150)*(I(i,j)-150)+200;             

            end

        end

    end

end

    figure(2);     imshow(uint8(Y))

结果:

                    

       3-1:原图                                     图3-2:灰度拉伸

分析:

将其小于30的灰度值不变,将30150的灰度值拉伸到30200,同时压缩150255的灰度值到200255之间

4代码:

I=imread('C:\Users\xxxy\Desktop\4.jpg'); imshow(I);  figure;

se = translate(strel(1), [100 100]);  

a = imdilate(I,se);     imshow(a)%平移      figure;

b = imresize(I,1.5)     imshow(b)%放大1.5   figure;

c= imresize(I,0.5)      imshow(c)%缩小0.5    figure;

[height,width,dim]=size(I);

tform1=maketform('affine',[-1 0 0;0 1 0;width 0 1]);

d1=imtransform(I,tform1,'nearest');  imshow(d1);%水平镜像 figure;

tform2=maketform('affine',[1 0 0;0 -1 0;0 height 1]);

d2=imtransform(I,tform2,'nearest');  imshow(d2);%垂直镜像 figure;

e1 = imrotate(I,90);  imshow(e1)%旋转90    figure;

e2 = imrotate(I,180); imshow(e2)%旋转180   figure;

e3 = imrotate(I,270);  imshow(e3)%旋转270  figure;

e4 = imrotate(I,360);  imshow(e4)%旋转360  figure;

          

        图4-1:原图                                  图4-2:平移

           

        图4-3:放大1.5                                                4-4:缩小0.5

                

           图4-5:水平镜像                                4-5:垂直镜像

            

              4-7:旋转90度                                       4-8:旋转180

                    

            图4-9:旋转270度                            4-10:旋转360度  

猜你喜欢

转载自blog.csdn.net/weixin_39569242/article/details/79874831