Matlab 图像处理

目录

1.1 图片的读写和显示

1.2 彩色图、灰度图和二值化

RGB分离与合并

彩色图转灰度图 rgb2gray

对灰度图进行二值化 (0或1) imbinarize

1.3 MATLAB 中图像处理相关函数

调整图像大小 imresize

旋转图像 imrotate

图像的加减乘除


%960*960*3 : 像素点的个数,对应矩阵大小
% 矩阵元素值的范围 :0:255,0:黑色,255:白色 
%uint8 :unsigned int 8 无符号整型
pic = imread("xiaofen.jpg")

1.1 图片的读写和显示

imshow(pic);

 Matlab 图像处理_第1张图片

 


t = pic(60:100,60:100); % 展示出局部
% 部分矩阵对应部分图片

imshow(t )


%自己画图像

m = randi ([0,255],[400,400]); %生成随机矩阵  矩阵是0到255,
% m是double型,应该转化成 无符号整型

m = uint8(m);
imshow(m);

 Matlab 图像处理_第2张图片

 

%生成一个渐变图像
bw = zeros([256,400]); % 有256行400列的 值为0 (全0矩阵)

for i = 1:256
    for j = 1:400
        bw(i,j) = i ;% i行的所有列的值为i
    end
end
bw = uint8(bw);
imshow(bw)
%  保存图片
imwrite(bw,"bw.jpg");

 Matlab 图像处理_第3张图片

 

1.2 彩色图、灰度图和二值化

RGB分离与合并

% RGB三通道分离
%   矩阵的索引

pepper  = imread("peppers.png");% 行 列 页

imshow(pepper);
R = pepper(:,:,1);
G = pepper(:,:,2);
B = pepper(:,:,3);

subplot(221);
imshow(pepper);
title("original");

subplot(222);
imshow(R);
title("R");

subplot(223);
imshow(G);
title("G");

subplot(224);
imshow(B);
title("B");


rgb(:,:,1) = R;
rgb(:,:,2) = G;
rgb(:,:,3) = B;

imshow(rgb);

Matlab 图像处理_第4张图片 

 

彩色图转灰度图 rgb2gray

pepper_gray =  rgb2gray(pepper);
imshow(pepper_gray);

Matlab 图像处理_第5张图片 

 

对灰度图进行二值化 (0或1) imbinarize

% 自己写函数
pepper_gray =  rgb2gray(pepper);
[row,col] = size(pepper_gray);%获取pepper_gray 的行列数
for i = 1:row
    for j = 1:col
        if pepper_gray(i,j) >128   %阈值是128
            pepper_gray(i,j) = 1;
        else
            pepper_gray(i,j) = 0;
        end
    end
end
figure;
pepper_bw = logical(pepper_gray);
imshow(pepper_bw);

 Matlab 图像处理_第6张图片

 

%  自带函数  (自带阈值)
% method  - 用于二值化图像的方法:'global' (默认)  |  'adaptive'
% 'Sensitivity' - 自适应阈值的敏感度因子:0.50(默认) | [0,1]          
% 'ForegroundPolarity' - 确定哪些像素被视为前景像素:'bright'(默认) |  'dark'     
% 'bright':前景比背景亮
% 'dark' :前景比背景暗

pepper_gray =  rgb2gray(pepper);
bw = imbinarize(pepper_gray,"adaptive","ForegroundPolarity","bright","Sensitivity",0.5);
imshow(bw);

 Matlab 图像处理_第7张图片

 

1.3 MATLAB 中图像处理相关函数

调整图像大小 imresize

I = imread("peppers.png");
imshow(I );

 Matlab 图像处理_第8张图片

J = imresize(I,0.5);  %把J放大0.5倍
imshow(J );

 Matlab 图像处理_第9张图片

 

K = imresize(I,[200,200]);  %指定大小
imshow(K );

 Matlab 图像处理_第10张图片

 

 

 

旋转图像 imrotate

旋转图像 imrotate

J = imrotate(I,30);
 imshow(J );

 Matlab 图像处理_第11张图片

 

图像的加减乘除

% imadd()   两幅图像相加,要求大小一致
% imsubtract()  
% immultiply()  矩阵的点乘
% imdivide()    矩阵的点除
 J = imadd(I,50);
  imshow(J );
  

 Matlab 图像处理_第12张图片

 


%  两幅图片也可以相加 但是大小得一样(本质上是矩阵相加)
I = imread('rice.png');
imshow(I );

 Matlab 图像处理_第13张图片

 

J = imread('cameraman.tif');
imshow(J );

 Matlab 图像处理_第14张图片

 

K = imadd (I,J); % 相加
imshow(K );

 Matlab 图像处理_第15张图片

 

L = imsubtract(I,J); % 相减
imshow(L ); 

 Matlab 图像处理_第16张图片

 

M = immultiply(I,0.5);  % 乘法
imshow(M );

 Matlab 图像处理_第17张图片

 

 

 

 

你可能感兴趣的:(自学,matlab,图像处理,开发语言)