区域⽣长的基本思想是将具有相似性质的像素集合起来构成⼀个区域,实质是将具有相似特性的像素元素连接成区域。具体实现时,先在分割的区域⼀个种⼦像素作为⽣长的起点,再将种⼦像素周围邻域中与种⼦像素有相同或相似性质的像素(根据某种事先确定的⽣长准则确定)合并到种⼦像素所在区域中,然后将这些新增的像素点作为新的⽣长点重复上⾯的过程。陈道学
三个问题:
1. 选择或确定⼀组正确代表所需区域的种⼦像素;
2. 确定⽣长过程中能将相邻像素包括进来的准则;
3. ⽣长过程停⽌的条件或准则。
测试图⽚证券法论文
源码
function J = My_RegionGrowing(I, init_pos, reg_maxdist)
% 区域⽣长法提取⽬标区域:⽐较新像素所在区域平均灰度值与各领域像素的灰度值% 输⼊: % I : ⼆维数组,数值表⽰灰度值,0~255
% init_pos: 指定的种⼦点坐标
% reg_maxdist : 阈值,默认值为20
% 输出:
% J : 感兴趣区域
% ⽰例:
%{
img = imread('1.bmp');
I = rgb2gray(img);
I = double(I);
x = 271;
y = 259;
J = My_RegionGrowing(I, [x, y], 20);
imshow(img)
hold on
plot(y, x, 'p')
hold off
figure
imagesc(J)
%}
[row, col] = size(I); % 输⼊图像的维数
J = zeros(row, col); % 输出
x0 = init_pos(1); % 初始点
十八大以来重要文献选编y0 = init_pos(2);
reg_mean = I(x0, y0); % ⽣长起始点灰度值
乌龙学院
J(x0, y0) = 1; % ⽣长起始点设置为⽩⾊
reg_sum = reg_mean; % 符合⽣长条件的灰度值总和
reg_num = 1; % 符合⽣长条件的点的个数
count = 1; % 每次判断周围⼋个点中符合条件的数⽬
reg_choose = zeros(row*col, 2); % 记录已选择点的坐标
reg_choose(reg_num, :) = init_pos;
num = 1; % 第⼀个点
while count > 0
s_temp = 0; % 周围⼋个点中符合条件的点的灰度值总和
85式高射机
count = 0;
for k = 1 : num % 对新增的每个点遍历,避免重复
电子管风琴i = reg_choose(reg_num - num + k, 1);
j = reg_choose(reg_num - num +k, 2);
if J(i, j) == 1 && i > 1 && i < row && j > 1 && j < col % 已确定且不是边界上的点 % ⼋邻域
for u = -1 : 1
for v = -1 : 1
% 未处理且满⾜⽣长条件的点
if J(i + u, j + v) == 0 && abs(I(i + u, j + v) - reg_mean) <= reg_maxdist J(i + u, j + v) = 1; % 对应点设置为⽩⾊
count = count + 1;
reg_choose(reg_num + count, :) = [i + u, j + v];
s_temp = s_temp + I(i + u, j + v); % 灰度值存⼊s_temp中
end
end
end
end
end
num = count; % 新增的点
reg_num = reg_num + count; % 区域内总点数
reg_sum = reg_sum + s_temp; % 区域内总灰度值
reg_mean = reg_sum / reg_num; % 区域灰度平均值
end