MATLAB教学_08影像处理一

本文学习视频地址:https://www.bilibili.com/video/av68228488?p=8

imread() and imshow()

%%
clear,
I=imread('pout.tif');    %读图像
imshow(I);               %显示图像

可以看到这个图像的所有像素点。是从0到255。因为是一个灰阶的图像。

%%
clear;
I=imread('pout.tif');
for i=1:size(I,1)     %获取有多少行
    for j=1:size(I,2)    %获取有多少列
        if (rem(i,2)==0 && rem(j,2)==0)   %如果i和j为偶数。则使之数据 为0
            I(i,j)=0;
        end
    end
end
imshow(I);

imageinfo() 函数可以查看图像的信息

imtool() 函数可以查看像素信息。

在此工具里选择 Pixel Region

在以下图像算法里的矩阵,必须要两个矩阵相同

图像算法
imabsdiff(X,Y)相对应返回在X中的每个对应元素减去对应Y中的差值,返回绝对值
imadd(X,Y)相对应返回在X中的每个对应元素加上对应Y中元素的和
imapplymatrix(M,X)计算M的行与X的颜色通道的线性组合。
J = imcomplement(I)计算图像I的补码并以J返回结果。
imdivide(X,Y)相对应返回在X中的每个对应元素除以对应Y中元素的商
Z = imlincomb(K1,A1,K2,A2,...,Kn,An) Z = K1*A1 + K2*A2 + ... + Kn*An
immultiply(X,Y)相对应返回在X中的每个对应元素乘以对应Y中元素的结果
imsubtract(X,Y)将数组Y中的每个元素与数组X中的相应元素相减,然后返回输出数组Z中相应元素的差值。
%%
I=imread('pout.tif');
subplot(1,3,1); imshow(I);
title('original drawing');
subplot(1,3,2); J=immultiply(I,1.5);
imshow(J);
title('brighten');
subplot(1,3,3); K=imsubtract(J,I);
imshow(K);
title('dark');

 

37分钟练习

 

clear all; clc;     %37分钟练习
I=imread('rice.png');
subplot(1,3,1); imshow(I);
subplot(1,3,2); J=immultiply(I,1.5);
imshow(J);
subplot(1,3,3);       %这里反差变大,利用的是如果像素超过125,则增加一个数,如果小于,则再减去
for i=1:size(I,1)
    for j=1:size(I,2)
        if I(i,j) < 125
            I(i,j)=I(i,j)-50;
        else
             I(i,j)=I(i,j)+50;
        end
    end
end
imshow(I);

 

imhist() 函数

[counts, binLocations]=imhist(I)

为灰阶图 I 计算 直方图。 在counts 里返回有多少个不同的像素bins, 也就是说你的图里有多少个不同的像素值,就返回多少。在binLocations 里返回每个bins 里的数目。直方图中bin的数量由图像类型决定。

 

clear all; clc;     %41分钟练习
I=imread('rice.png');
subplot(2,3,1); imshow(I);  title('原图','FontSize',20);
subplot(2,3,2); J=immultiply(I,1.5);
imshow(J);  title('变亮','FontSize',20);
subplot(2,3,3);       %这里反差变大,利用的是如果像素超过125,则增加一个数,如果小于,则再减去
for i=1:size(I,1)
    for j=1:size(I,2)
        if I(i,j) < 125
            K(i,j)=I(i,j)-50;
        else
             K(i,j)=I(i,j)+50;
        end
    end
end
imshow(K); title('反差变大','FontSize',20);
subplot(2,3,4); imhist(I);ylim([0 1500]);  %ylim 是为了好比较三个直方图的数据 
subplot(2,3,5); imhist(J);ylim([0 1500]);
subplot(2,3,6); imhist(K);ylim([0 1500]);

 

histeq()

J = histeq(I,hgram)

对灰度图像I进行变换,使输出灰度图像J的长度(hgram) bin直方图与目标直方图hgram近似匹配。

 

44分钟练习

  1. 先找到最大值和最小值
  2. 计算出间距,把这个间距调整到0-255。可以使用 (I-min) *255/distance;
  3. 给I赋值所有的新值,显示图像。
clear all; clc;    % 44分钟练习
max=0;    min=300;
I=imread('rice.png');
subplot(2,3,1); imshow(I);  title('原图','FontSize',20);
subplot(2,3,2); imhist(I);  title('原图直方图','FontSize',20);
subplot(2,3,3); J=histeq(I);imshow(J);   title('原图均质后','FontSize',20);
subplot(2,3,4); imhist(J);  ylim([1 2000]);  title('原图均质图','FontSize',20);
for i=1:size(I,1)
    for j=1:size(I,2)
        if max<I(i,j)
            max=I(i,j)
        elseif min>I(i,j)
            min=I(i,j)
        end
    end
end
distance=max-min;    %找到原来数据里最大值与最小值的区间
Z=(double(I)-double(min)).*255/double(distance);    %先把原来的数据放到从0开始的位置,然后放到0-255的区间
                %注意这里必须要先转换再做算法,因为原本I 是uint8的,所以最大值为255。不转换的话,只能到255。
Y=uint8(Z);
subplot(2,3,5);
imhist(Y);      title('均质后','FontSize',20);

 

 

imrotate()

旋转多少度函数

最后的图像转换不会啊。有哪位大神。

最后发现这个就是给了个矩阵来看下是如何旋转角度的,并不是要自己做出来。

 imwrite()

存储函数

 

  • 19
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值