MATLAB教学_08影像处理一

本文学习视频地址:
() and ()
%%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为偶数 。则使之数据 为0I(i,j)=0;endendendimshow(I);
() 函数可以查看图像的信息
()函数可以查看像素信息 。
在此工具里选择 Pixel
在以下图像算法里的矩阵,必须要两个矩阵相同
图像算法
(X,Y)
相对应返回在X中的每个对应元素减去对应Y中的差值,返回绝对值
imadd(X,Y)
相对应返回在X中的每个对应元素加上对应Y中元素的和
(M,X)
计算M的行与X的颜色通道的线性组合 。
J= (I)
计算图像I的补码并以J返回结果 。
(X,Y)
相对应返回在X中的每个对应元素除以对应Y中元素的商
Z= (K1,A1,K2,A2,...,Kn,An)
Z = K1*A1 + K2*A2 + ... + Kn*An
(X,Y)
相对应返回在X中的每个对应元素乘以对应Y中元素的结果
(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) < 125I(i,j)=I(i,j)-50;elseI(i,j)=I(i,j)+50;endendendimshow(I);
() 函数
[, ]=(I)
为灰阶图 I 计算 直方图 。在 里返回有多少个不同的像素bins, 也就是说你的图里有多少个不同的像素值,就返回多少 。在 里返回每个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) < 125K(i,j)=I(i,j)-50;elseK(i,j)=I(i,j)+50;endendendimshow(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]);
()
J= (I,hgram)
对灰度图像I进行变换,使输出灰度图像J的长度(hgram) bin直方图与目标直方图hgram近似匹配 。
44分钟练习 先找到最大值和最小值计算出间距,把这个间距调整到0-255 。可以使用 (I-min) *255/;给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 maxI(i,j)min=I(i,j)endendenddistance=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);