Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 非图像数据的直方图均衡化_Matlab_Histogram - Fatal编程技术网

Matlab 非图像数据的直方图均衡化

Matlab 非图像数据的直方图均衡化,matlab,histogram,Matlab,Histogram,我有一个包含负值和正值的矩阵: 我使用以下命令成功绘制其pdf: [n,xout] = hist(A(:), 256); pdf = n/numel(A); figure; stem(xout, pdf, 'marker', 'none'); ind = find(pdf == max(pdf)); cdf1 = cumsum(pdf(ind:end)); cdf2 = cumsum(pdf(ind-1:-1:1)); cdf = [flipud(cdf2); cdf1]; f

我有一个包含负值和正值的矩阵:

我使用以下命令成功绘制其pdf:

[n,xout] = hist(A(:), 256);
pdf = n/numel(A);
figure; stem(xout, pdf, 'marker', 'none');    
ind = find(pdf == max(pdf));

cdf1 = cumsum(pdf(ind:end));
cdf2 = cumsum(pdf(ind-1:-1:1));

cdf = [flipud(cdf2); cdf1];

figure; stem(xout, cdf, 'marker', 'none');
不幸的是,我不能使用
unique(A)
而不是
256
,因为它会重复返回矩阵的值

这是pdf: 如何实现直方图均衡化?我使用以下命令计算pdf的累积总和:

[n,xout] = hist(A(:), 256);
pdf = n/numel(A);
figure; stem(xout, pdf, 'marker', 'none');    
ind = find(pdf == max(pdf));

cdf1 = cumsum(pdf(ind:end));
cdf2 = cumsum(pdf(ind-1:-1:1));

cdf = [flipud(cdf2); cdf1];

figure; stem(xout, cdf, 'marker', 'none');
由此产生的cdf是:

这是真的吗?如果是,之后我该怎么办?最后,如何将均衡直方图转换为均衡图像(矩阵)


任何帮助都将不胜感激。

如果X是您的矩阵,您只需执行以下操作:

[y, elements] = hist(X(:), unique(X));
stem(elements, y);

你有你的直方图

那么以前版本中的
直方图
历史
呢?谢谢你,MingiuX,但是为什么是唯一的(X)?我在参数中使用了256而不是unique(X),得到了一个类似于负分布的imhist的直方图。使用256而不是unique(X),您创建了一个由256个元素组成的
元素
向量,因此您将X轴划分为256个不同的值,并且只对那些值赋予权重,这些值也可以在
X
矩阵中找到。相反,使用unique(X),您将获得一个只包含一次考虑的矩阵元素的
元素
向量(它们是您赋予权重不同于0的元素)。如果这个答案不清楚,试着打印两种情况下的
元素
向量,你就会明白。好的。非常感谢你。