Matlab 2022a绘制直方图函数,自定义直方图函数,输出图像

一:绘制图像直方图函数,定义为myDrawHistogram.m

myDrawHistogram.m代码如下:
function y = myDrawHistogram(x)  %函数以function关键字开头,函数名作为文件名
x = double(x);p = x(:);     %将输入图像x转化为double数据类型,将列排列成一个列向量
%%  两个%%代表分隔线
y = hist(p,256);hist(p,256);    %即将图像的直方图保存在y中,并绘制直方图
pm = myMax(y);  //
k = ceil((pm+50)/200);
tk = 200;
if k>10
    tk = 400;k = ceil(k/2)*2;
end
%%  设置直方图的坐标和样式
xlabel('piexl value');ylabel('frequency');
axis([0 256 0 k*200]);
set(gca,'xtick',0:50:256,'ytick',0:tk:k*200);
set(gca,'fontsize',12,'fontname','times new roman','tickdir','out');
set(gcf,'position',[400 100 300 200],'color','w');
%%
    function mm = myMax(v)  %代表myDrawHisteogram的内调函数
       mm = max(v);
   end
end

 因为是我们写的调用函数,在没有参数是运行出现以下信息是正常的,这是只要在编写一个程序调用这个函数就可以了;

二:绘制图像直方图程序

pc001.m的代码如下:
clear;clc;close all;
%clear代表清空工作区的变量;
%clc代表清空命令窗口显示的命令
%close all代表关闭图形输出窗口
% 代表依次读入图像,不在同一目录下可以用绝对路径
p1 = imread("D:\matlab\image\Lena.tif");
p2 = imread("D:\matlab\image\Baboon .tif");
p3 = imread("D:\matlab\image\Peppers.tif");
%调用函数一次输出图像的直方图,并加上标题
figure(1);myDrawHistogram(p1);title("lena");
figure(2);myDrawHistogram(p2);title("Baboon");
figure(3);myDrawHistogram(p3);title("Peppers");

三:得到图像 

 图像一:Lena

图像二:Baboon

图像三:Peppers

四:总结

通过以上的图像可以发现直方图图像具有明显的波动特征,所以,要从图像的直方图图像恢复成原始图像是很难的,且当图像呈现均匀分布时,恢复图像几乎不可能。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB中可以使用`histogram`函数绘制直方图,也可以使用`hist`函数进行绘制。下面分别介绍这两个函数的用法。 1. 使用`histogram`函数绘制直方图 `histogram`函数可以直接将数据绘制直方图,并可以对直方图的颜色、边界等进行设置。函数的基本语法如下: ``` histogram(X) ``` 其中,X为需要绘制直方图的数据。除此之外,还有许多其他的参数可以进行设置,如设置直方图的边界、颜色、透明度等。更详细的用法可以参考MATLAB的官方文档。 例如,下面的代码可以绘制一个由随机数生成的1000个数据点的直方图: ``` X = randn(1000,1); % 生成1000个随机数 histogram(X) % 绘制直方图 ``` 2. 使用`hist`函数绘制直方图 `hist`函数可以将数据划分成若干个区间,并统计每个区间内的数据点个数,最终绘制直方图函数的基本语法如下: ``` hist(X,edges) ``` 其中,X为需要绘制直方图的数据,edges为区间的边界。如果不输入edges,则函数会自动根据数据的范围进行区间的划分。除此之外,还有许多其他的参数可以进行设置,如设置直方图的颜色、透明度等。更详细的用法可以参考MATLAB的官方文档。 例如,下面的代码可以绘制一个由随机数生成的1000个数据点的直方图: ``` X = randn(1000,1); % 生成1000个随机数 edges = -4:0.5:4; % 设置区间边界 hist(X,edges) % 绘制直方图 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值