Back
History
数字图像处理——作业2
{{{{<nowiki> %作业2:显示lenna图像直方图,对图像做直方图均衡化,显示直方图均衡化后的图像和直方图 % 读取彩色lenna图像(请从课程主页下载) [img,map] = imread('lenna.jpg'); % 转化为灰度图像 g = zeros(512,512); for x=1:512 for y=1:512 % 对每一个像素的RGB分量分别乘以系数0.2989,0.5870,0.1140再相加 g(x,y) = img(x,y,1) * 0.2989 + img(x,y,2) * 0.5870 + img(x,y,3) * 0.1140; end end g = uint8(g); % 显示lenna灰度图像 figure; imshow(g); % 计算直方图 hist = zeros(256,1); for x=1:512 for y=1:512 % 获取灰度值 level = g(x,y)+1; % 累加 hist(level) = hist(level)+1; end end % 显示直方图 figure; bar(hist); % 计算直方图的累积分布 CDF cdf = zeros(256,1); c = 0; for l=1:256 c = c + hist(l); cdf(l) = c; end % 直方图均衡化 geq = uint8(zeros(512,512)); for x=1:512 for y=1:512 % 原灰度为 l 的像素被映射为灰度为 cdf(l)*256/(512*512) level = g(x,y)+1; geq(x,y) = cdf(level)*256/(512*512); end end %显示均衡化后的图像 figure; imshow(geq); % 计算均衡化后图像的直方图 hist = zeros(256,1); for x=1:512 for y=1:512 % 获取灰度值 level = geq(x,y)+1; % 累加 hist(level) = hist(level)+1; end end % 显示直方图 figure; bar(hist); </nowiki>}}}}
The end