%% 图像的点运算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、等。和图片的类型相对应即可。
输出: