方法和详细的操作步骤如下:
1、第一步,打开需要处理的图像,然后编写以下代码,见下图红框标注处,转到下面的步骤。
2、第二步,执行完上面的操作之后,可以看到图像均衡的图片,见下图,转到下面的步骤。
3、第三步,执行完上面的操作之后,画出平衡图片的直方图,在平衡前后对图片进行比较,见下图。这样,就解决了这个问题了。
可以配合使用函数find和函数length或者函数find和函数length求得。
1、函数find和函数length配合使用获得像素为value的像素个数
% 读入数据112.bmp是要读入的图像
I = imread('112.bmp');
% 如果为彩色图像需转为灰度图像,否则不需要
I = rgb2gray(I);
% value为要计算的像素值
[r,c]=find(I==value);
% 获得个数
num=length(r);
2、函数find和函数sum配合使用获得像素为value的像素个数
% 读入数据112.bmp是要读入的图像
I = imread('112.bmp');
% 如果为彩色图像需转为灰度图像,否则不需要
I = rgb2gray(I);
% 获得像素值为value的素值个数
num=sum(sum(I==value));
function
greyvalue
=
calcrowgrey(pic)
%备注:输入值为读取文件后的图像数据,可以是m行
n列
或者是[m*n*3]
(彩色图片)
%
直接计算灰度值,如果是黑白图像,计算结束
greyvalue
=
sum(greyvalue
,2);
%判断如果是彩色图像
if
length(size(greyvalue
)>2
greyvalue
=
sum(greyvalue
,3);
end
假设A是图像所代表的矩阵,value为某一灰度值,num为图像A中该灰度值的像素个数,则有:
[r,c]=find(A==value);
num=length(r);
或者
num=sum(sum(A==value));
很容易。
首先用imread函数把图像读进矩阵中,
然后用一个循环语句,比较像素值,如果值相同,计数器(例如使用变量num)增加1.灰度是三个色素:红绿蓝三个分量的平均值 。