图像的点运算MATLAB实例代码
%% 图像的点运算1
% 一:图像直方图
%灰度直方图描述了一副图像的灰度级统计信息,主要应用于图像分割和图像灰度变换等处理过程中。从数学角度来说,图像直方图描述图像各个灰度级的统计特性,
%它是图像灰度值的函数,统计一幅图像中各个灰度级出现的次数或概率。归一化直方图可以直接反映不同灰度级出现的比率。横坐标为图像中各个像素点的灰度级别,
%纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。
clc;
clear;
A=imread('G:\资料\网课\数模培训\图形处理\2.jpg');
subplot(3,4,1);
imshow(A);
title('原图','Fontsize',15,'Color','b');
B=rgb2gray(A); %将RGB图转化为灰度图
%[M,N]=size(B); %计算图像大小
subplot(3,4,2);
imhist(B); %直接统计该图的灰度,灰度图为256个等级
title('直接统计各灰度','Fontsize',15,'Color','b');
subplot(3,4,3);
imhist(B,64); % 将直方图均分为64个等级,默认为256个等级
title('分为64个等级统计各灰度','Fontsize',15,'Color','b');
[counts,x]=imhist(B,32); % 获取直方图的横坐标和纵坐标,即各个像素级,以及每个像素级上的像素出现的次数
subplot(3,4,4);
pie(x,counts); %饼图
title('分为32级的饼图','Fontsize',15,'Color','b');
subplot(3,4,5);
stem(x,counts); % 通过刚才得到的值,绘制条形图。
title('分为32级的条形图','Fontsize',15,'Color','b');
subplot(3,4,6);
plot(x,counts); %折线图
title('分为32级的折线图','Fontsize',15,'Color','b');
subplot(3,4,7);
bar(x,counts); %柱状图
title('分为32级的柱状图','Fontsize',15,'Color','b');
subplot(3,4,8);
pie3(x,counts); %3维饼图
title('分为32级的3维饼图','Fontsize',15,'Color','b');
%% 图像灰度线性变换
C=imadjust(B,[0.1 0.5],[]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1]
subplot(3,4,9);
imshow(C);
title('线性变换[0.1 0.5]','Fontsize',15,'Color','b');
subplot(3,4,10);
imshow(imadjust(B,[0.3 0.7],[]));
title('线性变换[0.3 0.7]','Fontsize',15,'Color','b');
%% 图像灰度的对数变换
C=fft2(im2double(B)); %FFT
C=fftshift(C); %FFT频谱平移
%C=abs(C);
C1=log(C+1);
subplot(3,4,11);
imshow(C);
title('没有频谱变换');
subplot(3,4,12);
imshow(C1);
title('对数变换后');
%%
% 一般情况下是可以直接绘制图形的直方图,如果说我们有一个矩阵,要绘制直方图,可以强制转数据类型
%A=[1 1 1 1 2 2 56 5 65 56 78 9 9 9 9 55 44 44 44];
%B=uint8(A);
%imhist(B)
% 这样将B进行强制转换后,就可以认为其是一幅图片,就能用 imhist 了
% 可以转化为 uint8、uint16、等。和图片的类型相对应即可。
输出:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)