数字图像的基本运算1.docx
文本预览下载声明
数字图像的基本运算实验目的与要求熟悉和掌握Matlab能处理的图像格式。掌握在Matlab中图像的读取。掌握数字图像的基本运算能编程实现数字图像的各种基本运算。实验内容编程实现如下功能:读入任一灰度图像(若是彩色图像,首先将其变为灰度图像),统计该灰度图像各个灰度值的个数,并绘制灰度区间和灰度个数的柱状图。并输出该图中灰度值为:0—80的占比是多少,81-180间的占比是多少,180-255的占比是多少,通过这些占比,你得到1个什么结论?如果换成其它灰度图像呢?图1 某个图像的灰度柱状图程序:clcclearimg = imread(zhanglala.bmp);if numel(size(img)) 2 %如果是彩色图像就转换为灰度图像 img = rgb2gray(img);endfigure; %控制窗口数量imshow(img);%显示图片X = zeros(1, 256);%柱状图的X轴Y = zeros(1, 256);%柱状图的Y轴n1 = 0;%0-80占比n2 = 0;%81-180占比n3 = 0;%181-255占比X = 0 : 1 : 255;[m, n] = size(img);for i = 1 : m for j = 1 : n Y(img(i, j) + 1) = Y(img(i, j) + 1) + 1;%灰度值为0的下标为1 if img(i, j) = 80 n1 = n1 + 1; elseif img(i, j) = 180 n2 = n2 + 1; elseif img(i, j) = 255 n3 = n3 + 1; end endenddisp(0---80的比重为:);n1 = n1 / (m * n);disp(n1);disp(81---180的比重为:);n2 = n2 / (m * n);disp(n2);disp(181---255的比重为:);n3 = n3 / (m * n);disp(n3);figure;plot(X, Y);%绘制柱状图title(灰度直方图);请按如下分段函数对灰度图像进行处理,调用1题的柱状图程序,对比处理前和处理后的图像的区别。考虑,如果是RGB彩色图像怎么处理,请考虑处理方案,并将结果输出。程序:%灰度图像:clcclearimg = imread(Zhanglala.bmp);%读入图片figure;imshow(img);if ndims(img) == 3 %ndims(a)表示矩阵a的维数。如果是彩色图像就转换为灰度图像 img = rgb2gray(img); % 转换endfigure;imshow(img);[m, n] = size(img);img = im2double(img);% 转换为double类型,使所有点在0-1之间for i = 1 : m for j = 1 : n if img(i, j) 0 img(i, j) 0.35 img(i, j) = 0.3 * img(i, j); end if img(i, j) = 0.35 img(i, j) = 0.65 img(i, j) = 0.105 + 2.6333 * (img(i, j) - 0.35); end if img(i, j) 0.65 img(i, j) 1 img(i, j) = 1 + 0.3 * (img(i, j) - 1); end endendfigure;imshow(img);img = uint8(img * 255);% 从[0-1]转换回[0-255]X = zeros(1,256);%柱状图的X轴Y = zeros(1,256);%柱状图的Y轴X = 0 : 1 : 255;for i = 1 : m for j = 1 : n Y(img(i, j) + 1) = Y(img(i, j) + 1) + 1; endendfigure;plot(X,Y);%绘制柱状图-----------------------------------------------------------------------------------------%彩色图像:clcclearimg = imread(Zhanglala.bmp);%读入图片figure;i
显示全部