MATLBA基础图像处理算法之四叉树分割法

令G表示一幅图像, 将G分割成n个子区域G1, G2, ···, Gn的过程就叫分割

四叉树的分解步骤

1、将图像分成大小相同的区域。

2、阈值判断

3、像素点合并

4、过程迭代

clear;

z=1;

b=imread('veg.png');

I=rgb2gray(b);

figure(1);

imshow(I);

title('o image');

[m,n]=size(I);

figure(2);

imhist(I);

title('histogram of original image');

mindim=4;

S = qtdecomp(I,@Split,mindim,@Predicate);

blocks = repmat(uint8(0),size(S));

for dim = [512 256 128 64 32 16 8 4 2 1];   

  numblocks = length(find(S==dim));

  if (numblocks > 0)       

    values = repmat(uint8(1),[dim dim numblocks]);

    values(2:dim,2:dim,:) = 0;

    blocks = qtsetblk(blocks,S,dim,values);

  end

end

blocks(end,1:end) = 1;

blocks(1:end,end) = 1;

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像分割图像处理领域中的一个重要问题,它的目的是将一幅图像分成若干个不同的区域,使得每个区域内的像素具有相似的特征。最小误差阈值选择是一种常用的图像分割算法,其基本思想是选择一个阈值使得图像分割后的误差最小。 以下是基于 MATLAB 的最小误差阈值选择的实现步骤: 1. 读入需要分割的图像,将其转化为灰度图像。 2. 将灰度图像进行直方图均衡化,增强图像对比度。 3. 设定一个初始阈值 T,将图像中的像素分为两类:小于等于 T 的像素和大于 T 的像素。 4. 计算两类像素的平均灰度值:m1 和 m2。 5. 根据平均灰度值重新计算阈值 T = (m1 + m2) / 2。 6. 重复步骤 3-5 直到阈值 T 不再发生变化或者达到预设的最大迭代次数。 7. 将图像中小于等于阈值 T 的像素设为一个类别,大于阈值 T 的像素设为另一个类别。 8. 输出分割后的图像。 下面是 MATLAB 代码实现: ```matlab % 读入需要分割的图像 img = imread('test.jpg'); % 将图像转化为灰度图像 gray_img = rgb2gray(img); % 对灰度图像进行直方图均衡化 eq_img = histeq(gray_img); % 设定初始阈值 T T = 128; % 迭代次数 max_iter = 100; for i = 1:max_iter % 分割图像 class1 = eq_img <= T; class2 = eq_img > T; % 计算两类像素的平均灰度值 m1 = mean(eq_img(class1)); m2 = mean(eq_img(class2)); % 根据平均灰度值重新计算阈值 new_T = (m1 + m2) / 2; % 判断阈值是否变化 if abs(new_T - T) < 0.1 break; else T = new_T; end end % 将图像分成两类 seg_img = eq_img > T; % 显示分割后的图像 imshow(seg_img); ``` 需要注意的是,最小误差阈值选择的效果受到初始阈值的影响,不同的初始阈值可能会得到不同的分割结果。因此,在实际应用中需要根据具体情况选择合适的初始阈值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值