MATLAB图像处理—位图切割
这是冈萨雷斯《数字图像处理》(第二版)第三章,空间与图像增强的一节,书中位图切割的实现,留作为了一个习题,要求计算出能够产生其他位平面的灰度变换函数,我编了一下,不知道用到的灰度映射函数对不对,贴下来给大家共享一下:function varargout = im_bitcut(impath,n)
% IM_BITCUT 图像位图切割函数
% 数字图像分解为位平面,每一位平面为一二值图像
% | 0 f(x,y) <2^n
% g(x,y) = |
% | 255 f(x,y) >= 2^n
% n为位平面序号
% $Author: lskyp $Date: 2009.08.22
image1 = imread(impath);
if ndims(image1) == 3
image1 = rgb2gray(image1);
end
image1 = double(image1);
= size(image1);
imfinal = zeros(h,w);
for p = 1:h
for q = 1:w
tempgray = floor(image1(p,q)/(2^n));
if rem(tempgray,2) == 1
imfinal(p,q) = 255;
end
end
end
imfinal = im2uint8(mat2gray(imfinal));
if nargout == 0
imshow(imfinal)
title(['位平面' num2str(n)]);
else
varargout = imfinal;
end
实验如下:
复制内容到剪贴板
代码:
for k = 7:-1:0
subplot(2,4,8 - k)
im_bitcut('cameraman.tif',k)
end
页:
[1]