admin 发表于 2012-8-29 21:18:11

MATLAB图像处理—位图切割

这是冈萨雷斯《数字图像处理》(第二版)第三章,空间与图像增强的一节,书中位图切割的实现,留作为了一个习题,要求计算出能够产生其他位平面的灰度变换函数,我编了一下,不知道用到的灰度映射函数对不对,贴下来给大家共享一下:

admin 发表于 2012-8-29 21:18:39

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]
查看完整版本: MATLAB图像处理—位图切割