计算连通域的面积、周长、圆形度、矩形度以及长宽比

计算连通域的面积、周长、圆形度、矩形度以及长宽比
计算连通域的面积、周长、圆形度、矩形度以及长宽比

二值化

最小矩

结果:

Ar =

8220 924 17191 93 0 5020 3133

perimeter =

162 54 262 54 118 112

metric =

3.9360 3.9819 3.1471

4.0078 4.5305 3.1 386

Pwl =

1.0816 1.0303 1.2720 1.0303 1.1467 1.2

500

Pr =

0.7913 0.8235 0.8650 0.8289 0.7783 0.5 420

>>

代码

clear,clc

RGB = imread('pillsetc.png');

figure,imshow(RGB);

I = rgb2gray(RGB);

threshold = graythresh(I);

bw = im2bw(I,threshold);

figure,imshow(bw)

% remove all object containing fewer than 30 pixels

bw = bwareaopen(bw,30);

% fill a gap in the pen's cap

se = strel('disk',2);

bw = imclose(bw,se);

% fill any holes, so that regionprops can be used to estimate

% the area enclosed by each of the boundaries

bw = imfill(bw,'holes');

figure,imshow(bw)

ed=edge(bw);

figure,imshow(ed)

%%%%%以上是图像二值化上面制作二值化图像

L = bwlabel(bw);

L1 = bwlabel(ed);

Ar=zeros(1,max(L(:)));

perimeter=zeros(1,max(L1(:)));

metric=zeros(1,max(L1(:)));

Pwl=zeros(1,max(L1(:)));

Pr=zeros(1,max(L1(:)));

for i=1:max(L(:))

Ar(i)=sum(bw(L==i));

perimeter(i)=sum(ed(L==i));

metric(i) = 4*pi*Ar(i)/perimeter(i)^2;

[y,x]=find(L==i);

x0=min(x(:));

x1=max(x(:));

y0=min(y(:));

y1=max(y(:));

hold on

rectangle('Position',[x0,y0,x1-x0,y1-y0],'edgeColor','g','LineWidth', 1)

if x1-x0>=y1-y0

Pwl(i)=(x1-x0)/(y1-y0);

else

Pwl(i)=(y1-y0)/(x1-x0);

end

Pr(i)=Ar(i)/((y1-y0)*(x1-x0));

end

Ar

perimeter

metric

Pwl

Pr

clear,clc

RGB = imread('D:\360°2è??ˉàà?÷????\tupian\1.png');

I = rgb2gray(RGB);

threshold = graythresh(I);

bw = im2bw(I,threshold);

bw = bwareaopen(bw,30);

se = strel('disk',2);

bw = imclose(bw,se);

bw = imfill(bw,'holes');

ed=edge(bw);

L = bwlabel(bw);

L1 = bwlabel(ed);

perimeter=zeros(1,max(L1(:)));

for i=1:max(L(:))

perimeter(i)=sum(ed(L==i));

[y,x]=find(L==i);

x0=min(x(:));

x1=max(x(:));

y0=min(y(:));

y1=max(y(:));

hold on

rectangle('Position',[x0,y0,x1-x0,y1-y0],'edgeColor','g','LineWidth', 1)

end

perimeter

二值图像连通域标记算法与代码

二值图像连通域标记算法与代码 这里列举二值图像连通域标记算法包括直接扫描标记算法和二值图像连通域标记快速算法 一、直接扫描标记算法把连续区域作同一个标记,常见的四邻域标记算法和八邻域标记算法。 1、四邻域标记算法: 1)判断此点四邻域中的最左,最上有没有点,如果都没有点,则表示一个新的区域的开始。 2)如果此点四邻域中的最左有点,最上没有点,则标记此点为最左点的值;如果此点四邻域中的最左没有点,最上有点,则标记此点为最上点的值。 3)如果此点四邻域中的最左有点,最上都有点,则标记此点为这两个中的最小的标记点,并修改大标记为小标记。 2、八邻域标记算法: 1)判断此点八邻域中的最左,左上,最上,上右点的情况。如果都没有点,则表示一个新的区域的开始。 2)如果此点八邻域中的最左有点,上右都有点,则标记此点为这两个中的最小的标记点,并修改大标记为小标记。 3)如果此点八邻域中的左上有点,上右都有点,则标记此点为这两个中的最小的标记点,并修改大标记为小标记。 4)否则按照最左,左上,最上,上右的顺序,标记此点为四个中的一个。代码实现: #include #include #include //连通区域属性结构 typedef struct tagMarkRegion { std::list MarkPointList;//点列表 RECT rect; }MarkRegion; //定义MarkMap 结构,用来存放等价对 typedef struct tagEqualMark { int MarkValue1; //标记值 int MarkValue2; //标记值 } EqualMark; //定义MarkMapping 结构,用来存放标记映射关系 typedef struct tagMarkMapping

(整理)MATLAB 标注连通域.

matlab 标注连通域 clear; clc; f=imread('c:\1.jpg'); gray_level=graythresh(f); f=im2bw(f,gray_level); [l,n]=bwlabel(f,8) imshow(f) hold on for k=1:n [r,c]=find(l==k); rbar=mean(r); cbar=mean(c); plot(cbar,rbar,'Marker','o','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',10); plot(cbar,rbar,'Marker','*','MarkerEdgecolor','w'); end 主要概念: 1. 2.4连接 8连接 0 1 0 1 p 1 ===> 4连接,p为当前像素点。 0 1 0 1 1 1 1 p 1 ====》8连接,p为当前像素点。 1 1 1 3.bwlabel()函数 语法: [ L, num]=bwlabel(f,conn) 其中f是一副二值图像,conn用来指定期望的连接(不是4就是8),默认为8,输出L称为标记矩阵,参数num给出所找到连接分量的总数。 4.find()函数 该函数非常有用,会返回指定条件的索引值,在标记矩阵中的作用是返回对应对象的索引。 I = FIND(X) returns the linear indices corresponding to the nonzero entries of the array X. X may be a logical expression. Use IND2SUB(SIZE(X),I) to calculate multiple subscripts from the linear indices I. find(bwlabel(bw)==2)表示的意思是连通域2中的数值所在向量的位置。

长方体和正方体的周长面积和体积计算公式大全

For personal use only in study and research; not for commercial use 长方体和正方体的周长面积和体积计算公式大全 周长: 长方形周长公式=(长+宽)X2 正方形周长公式=边长X4 直径=半径×2 半径=直径÷2 圆的周长=×直径,或=圆周率×半径×2 面积: 长方形面积=长X宽 正方形面积公式=边长X边长 三角形的面积=底×高÷2 面积=底×高 的面积=(上底+下底)×高÷2 圆的面积=圆周率×半径×半径 容积:容器若能容纳的物体的体积: 表面积:长方体或正方体六个面的总面积。 正方体的表面积:S=6a×a(棱长×棱长×6) 正方体体积公式:V=a×a×a(棱长×棱长×棱长) 长方体的表面积:S=2×(ab+bc+ac)((长×宽+长×高+宽×高)×2) 长方体体积公式:长X宽X高 长方体棱长总和公式:(长+宽+高)X4 正方体体积:Va×b×c(长×宽×高) 正方体棱长总:棱长X12 体的侧面积=底面圆的周长×高 圆柱体表面积=上下底面面积+侧面积,[或S=2π*r*r+2π*r*h(2×π×半径×半径+2×π×半径×高)] 圆柱体的体积=底面积×高,[或V=π *r*r*h(π×半径×半径×高)] 圆锥体积:V=S底×h÷3(底面积×高÷3) 正方体体积公式:棱长X棱长X棱长

通用体积公式:底面积X高 截面积X长 表面积的变化要会人折。 长方体或正方体被锯开后,一次会增加两个面;反之,两个相同,体或长方体拼在一起,一次 会减少两个面。 长方体和正方体的特征,相同点和不同点要牢记。 名称符号周长C和面积S 正方形 a—边长 C=4a S=a2 长方形 a和b-边长 C=2(a+b) S=ab 三角形 a,b,c-三边长 h-a边上的高 s-周长的一半 A,B,C-内角 其中s=(a+b+c)/2 S=ah/2 =ab/2·sinC =[s(s-a)(s-b)(s-c)]1/2 =a2sinBsinC/(2sinA) 四边形 d,D-对角线长 α-对角线夹角 S=dD/2·sinα 平行四边形 a,b-边长 h-a边的高 α-两边夹角 S=ah =absinα a-边长 α-夹角 D-长对角线长 d-短对角线长 S=Dd/2 =a2sinα 梯形 a和b-上、下底长

基于FPGA的二值图像连通域标记快速算法实现

基于FPGA的二值图像连通域标记快速算法实现 摘要:在图像自动目标识别和跟踪过程中,首先对图像目标进行阈值分割提取,得到的二值图像通常包含多个连通区域,系统利用图像目标的形状特性对可疑高威胁的飞行目标进行自动识别。因此,需要对各连通区域块进行分别检测判断,本文采用改进的适合FPGA实现的快速标记算法对各连通域进行检测提取。 关键词:FPGA,二值图像连通域,快速标记算法,可编程逻辑 贺明 1 引言 在图像自动目标识别和跟踪过程中,首先对图像目标进行阈值分割提取,得到的二值图像通常包含多个连通区域,系统利用图像目标的形状特性对可疑高威胁的飞行目标进行自动识别。因此,需要对各连通区域块进行分别检测判断,本文采用改进的适合FPGA实现的快速标记算法对各连通域进行检测提取。 实现二值图像连通体检测通常采用的方法有下几种[1] [2] [3]:区域生长法:首先对图像进行逐行(列)扫描,每遇到一个未标记的“1”像素点,就分配其一个未使用过的标号,然后对其领域进行检测,如有未标记过的“1”像素,则赋予相同的标号。反复进行这一操作.直到不存在应该传播标号的“1”像素。然后继续图像行(列)扫描,如检测判未标记的“1”像素则赋予其新的标号,并进行与以上相同的处理。整个图像扫描结束,算法也就终止。这种方法可准确地检测出各种类型的连通体.但处理时间也较长.因为要逐一检测每一“1”像素的邻域,且出现“1”像素的重复扫描。跟踪算法:二值图像中每个取值为“1”的像素被标记一个与其坐标相关的标号,如由n,m串构成的数。热后,扫描标记后的图像,并将每十像素的标号改为其邻域内的最小标号。反复执行这个过程,直到不需要作标记更改为止。用这种方法处理小而凸的目标时,收敛速度较慢。 本文以适合FPGA实现为目的,提出一种具有计算规则性的快速二值图像连通域标记算法。与传统的二值图像标记算法相比,该算法具有运算简单性、规则性和可扩展性的特点,适合以FPGA实现。选用在100MHz工作时钟下,处理384×288像素的红外图像能够达到400帧/秒以上的标记速度,足够满足实时目标识别系统的要求。处理速度可以满足大部分实时目标识别系统的要求。该算法同样可以软件编程方式应用于嵌入式DSP系统中。 2 算法描述 首先,在进行标记算法以前,利用硬件开辟独立的图像标记缓存和连通关系数组,接着在视频流的采集传输过程中,以流水线的方式按照视频传输顺序对图像进行逐行像素扫描,然后对每个像素的邻域分别按照逆时针方向和水平方向进行连通性检测和等价标记关系合并,检测出的结果对标记等价数组和标记缓存进行更新,在一帧图像采集传输结束后,得到图像的

二值化图像8联通域标记

//基于区域生长法的连通域标记(C语言) 区域生长法利用区域生长的思想,一次生长过程可以标记一整个连通区,只需对图像进行一次扫描就能标记出所有连通区。算法描述如下: Step1、输入待标记图像bitmap(二值化原图,SDRAM内,u16,只有0x0000与0xffff),初始化一个与输入图像同样尺寸的标记矩阵labelmap(SDRAM内,大小与二值化原图相同,u16,初值0x0000),一个队列queue(SDRAM内,大小与二值化原图相同)以及标记计数labelIndex (unsigned char,最大值255,初值0); Step2、按从左至右、从上至下的顺序扫描bitmap,当扫描到一个未被标记的前景像素p时(0xffff,2个字节,unsigned short int),labelIndex加1,并在labelmap中标记p(相应点的值赋为labelIndex),同时,扫描p的八邻域点,若存在未被标记的前景像素,则在labelmap 中进行标记,并放入queue中,作为区域生长的种子; Step3、当queue不为空时,从queue中取出一个生长种子点p1,扫描p1的八邻域点,若存在未被标记过的前景像素,则在labelmap中进行标记,并放入queue中; Step4、重复Step3直至queue为空,一个连通区标记完成; Step5、转到Step2,直至整幅图像被扫描完毕,得到标记矩阵labelmap和连通区的个数labelIndex。 该算法最坏情况下,将对每个像素点都进行一次八邻域搜索,算法复杂度为O(n)。 //辅助队列 typedef struct QNode { int data; struct QNode *next; }QNode; typedef struct Queue { struct QNode* first; struct QNode* last; }Queue; void PushQueue(Queue *queue, int data) { QNode *p = NULL; //p = (QNode*)malloc(sizeof(QNode)); p->data = data; if(queue->first == NULL) { queue->first = p; queue->last = p; p->next = NULL; } else

面积和周长的对比

教学设计示例 面积和周长的对比 教学目标: 1、通过面积和周长的比较,使学生正确区分、理解、掌握面积和周长这两个概念,熟练掌握长方形、正方形面积和周长的计算方法。 2、运用比较的方法,培养学生分析、概括能力以及解决实际问题的能力。 3、渗透事物之间是相互联系和发展变化的辨证唯物主义观点。 教学重点: 正确区分周长和面积的概念和计算方法。 教学难点: 根据实际情况确定周长或面积的计算方法。 教学过程: 一、复习引入 1、出示饭店招牌的平面图。教师说明:小明家的饭店要开张了,需要制作一个招牌。招牌的底色要漆成白色,四周还要装饰一圈彩灯。要完成这些任务,小明要告诉工人些什么? 2、用自己的话说一说什么是面积?什么是周长? 3、面积和周长是两个有着根本区别的数学概念,但是在实际应用中却常常容易混淆,为了使大家正确区分、理解和掌握这两个概念,我们今天就来对面积和周长进行比较。(板书课题) 二、新授 1、教师:请学生拿出一个长方形的纸片,让学生闭上眼睛想想它的周长和面积,并用手摸一摸。利用手中的学具测量周长和面积。 2、学生分组活动,然后汇报自己的方法。 (1)用线测量出周长,用面积单位测量出面积。 (2)用尺子测量出长和宽,再计算周长和面积。 3、例1、算出长方形的周长和面积各是多少?

教师:现在已经知道了长和宽的数据,请完成周长和面积的计算。 4、思考:通过计算,你发现计算长方形的周长和面积各需要知道哪些条件? 周长和面积又有哪些不同呢?请同学们分小组讨论。 提纲: (1)长方形的周长和面积各指的是什么? (2)周长和面积的计算方法各是什么? (3)周长和面积各用什么计量单位? 5、学生汇报,教师根据学生的回答填写下表。 三、巩固练习 1、分别指出手帕、桌面的周长和面积。 2、计算饭店招牌的面积和周长。(单位:米)

二值图像连通域标记算法与代码 收藏

二值图像连通域标记算法与代码收藏 10:19:42二值图像连通域标记算法与代码 这里列举二值图像连通域标记算法包括直接扫描标记算法和二值图像连通域标记快速算法 一、直接扫描标记算法把连续区域作同一个标记,常见的四邻域标记算法和八邻域标记算法。 1、四邻域标记算法: 1)判断此点四邻域中的最左,最上有没有点,如果都没有点,则表示一个新的区域的开始。 2)如果此点四邻域中的最左有点,最上没有点,则标记此点为最左点的值;如果此点四邻域中的最左没有点,最上有点,则标记此点为最上点的值。 3)如果此点四邻域中的最左有点,最上都有点,则标记此点为这两个中的最小的标记点,并修改大标记为小标记。 2、八邻域标记算法: 1)判断此点八邻域中的最左,左上,最上,上右点的情况。如果都没有点,则表示一个新的区域的开始。 2)如果此点八邻域中的最左有点,上右都有点,则标记此点为这两个中的最小的标记点,并修改大标记为小标记。 3)如果此点八邻域中的左上有点,上右都有点,则标记此点为这两个中的最小的标记点,并修改大标记为小标记。 4)否则按照最左,左上,最上,上右的顺序,标记此点为四个中的一个。 代码实现: #include #include #include //连通区域属性结构 typedef struct tagMarkRegion

{ std::list MarkPointList;//点列表 RECT rect; }MarkRegion; //定义MarkMap 结构,用来存放等价对 typedef struct tagEqualMark { int MarkValue1; //标记值 int MarkValue2; //标记值 } EqualMark; //定义MarkMapping 结构,用来存放标记映射关系typedef struct tagMarkMapping { int nOriginalMark; //第一次扫描的标记 int nMappingMark; //等价整理之后对应标记 } MarkMapping; /* 功能说明:八连通标记 参数说明:I,表示图像数据指针 ImageWidth,表示图像宽 ImageHeight,表示图像高

长方体和正方体周长面积和体积计算公式大全

长方体和正方体的周长面积和体积计算公式大全 周长: 长方形周长公式=(长+宽)X2 正方形周长公式=边长X4 直径=半径×2 半径=直径÷2 圆的周长=圆周率×直径,或=圆周率×半径×2 面积: 长方形面积=长X宽 正方形面积公式=边长X边长 三角形的面积=底×高÷2 平行四边形面积=底×高 梯形的面积=(上底+下底)×高÷2 圆的面积=圆周率×半径×半径 容积:容器若能容纳的物体的体积: 表面积:长方体或正方体六个面的总面积。 正方体的表面积:S=6a×a(棱长×棱长×6) 正方体体积公式:V=a×a×a(棱长×棱长×棱长) 长方体的表面积:S=2×(ab+bc+ac)((长×宽+长×高+宽×高)×2) 长方体体积公式:长X宽X高 长方体棱长总和公式:(长+宽+高)X4 正方体体积:Va×b×c(长×宽×高) 正方体棱长总:棱长X12 圆柱体的侧面积=底面圆的周长×高 圆柱体表面积=上下底面面积+侧面积,[或S=2π*r*r+2π*r*h(2×π×半径×半径+2×π×半径×高)] 圆柱体的体积=底面积×高,[或V=π *r*r*h(π×半径×半径×高)] 圆锥体积:V=S底×h÷3(底面积×高÷3) 正方体体积公式:棱长X棱长X棱长 通用体积公式:底面积X高 截面积X长

表面积的变化要会人折。 长方体或正方体被锯开后,一次会增加两个面;反之,两个相同,体或长方体拼在一起,一次 会减少两个面。 长方体和正方体的特征,相同点和不同点要牢记。 平面图形 名称符号周长C和面积S 正方形 a—边长 C=4a S=a2 长方形 a和b-边长 C=2(a+b) S=ab 三角形 a,b,c-三边长 h-a边上的高 s-周长的一半 A,B,C-内角 其中s=(a+b+c)/2 S=ah/2 =ab/2·sinC =[s(s-a)(s-b)(s-c)]1/2 =a2sinBsinC/(2sinA) 四边形 d,D-对角线长 α-对角线夹角 S=dD/2·sinα 平行四边形 a,b-边长 h-a边的高 α-两边夹角 S=ah =absinα 菱形 a-边长 α-夹角 D-长对角线长 d-短对角线长 S=Dd/2 =a2sinα 梯形 a和b-上、下底长 h-高 m-中位线长 S=(a+b)h/2

计算连通域的面积

计算连通域的面积 matlab函数_连通区域 1、 matlab函数bwareaopen——删除小面积对象 格式:BW2 = bwareaopen(BW,P,conn) 作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域。 算法: (1)Determine the connected components. L = bwlabeln(BW, conn); (2)Compute the area of each component. S = regionprops(L, 'Area'); (3)Remove small objects. bw2 = ismember(L, find([S.Area] >= P)); 2、matlab函数bwarea——计算对象面积 格式:total = bwarea(BW) 作用:估计二值图像中对象的面积。 注:该面积和二值图像中对象的像素数目不一定相等。 3、matlab函数imclearborder——边界对象抑制 格式:IM2 = imclearborder(IM,conn) 作用:抑制和图像边界相连的亮对象。若IM是二值图,imclearborder将删除和图像边界相连的对象。默认情况conn=8。 注:For grayscale images, imclearborder tends to reduce the overall intensity level in addition to suppressing border structures. 算法: (1)Mask image is the input image. (2)Marker image is zero everywhere except along the border, where it equals the mask image. 4、matlab函数bwboundaries——获取对象轮廓 格式:B = bwboundaries(BW,conn)(基本格式) 作用:获取二值图中对象的轮廓,和OpenCV中cvFindContours函数功能类似。B是一个P ×1的cell数组,P为对象个数,每个cell 是Q×2的矩阵,对应于对象轮廓像素的坐标。 5、matlab函数imregionalmin——获取极小值区域 格式:BW = imregionalmin(I,conn) 作用:寻找图像I的极小值区域(regional maxima),默认情况conn=8。 Regional minima are connected components of pixels with a constant intensity value, and whose external boundary pixels all have a higher value. 6、matlab函数bwulterode——距离变换的极大值 格式:BW2 = bwulterode(BW,method,conn) 作用:终极腐蚀。寻找二值图像BW的距离变换图的区域极大值(regional maxima)。用于距离变换的距离默认为euclidean,连通性为8邻域。

CAD各种面积周长计算大全

面域——制作与查询的方法 自从几个系列的练习题发表以后,参与的朋友非常踊跃。但其中有很多朋友,特别是刚接触CAD的新手们,对题目中求面域的面积、周长、质心(平面中也叫型心)等问题,感到无所适从。不知道怎样做面域,不知怎样求面积、周长。有的不知道怎样做扣除内孔的面域。 因而,大家发表了很多询问、求助此类问题的帖子,如一个个地解释、解答,实在是费时费力,力不从心,如不作解答,那大家还是很茫然,此类帖子还会不断地出现。 鉴于此,再因在三维建模时要大量用到建面域问题,我就抽时间写了此帖——“面域—制作与查询的方法”,希望对大家有所帮助。 一)、基本图形作面域 做面域(1) 这是最基本做面域的方法 1、用工具条上的“面域”: 选择全部图形,右键确认或回车,出现命令行中提示即可 2、用菜单栏“绘图”中的“面域”: 选择全部图形,右键确认或回车,出现命令行中提示即可 注意事项: 1、所有线段必须在交点处完全闭合。 2、所有线段不能超越交点(就是交点以外不能有多余部分)。

做面域(2) 这是特殊图形做面域的方法 如上图,求A、B的“面域”,用第一种方法就不行了具体做法如下: 1、点击菜单栏的“绘图”,弹出下拉菜单: 2、选择“边界”。

3、在对话框中,类型选“面域”,再点击“拾取点”。 4、在图形界面里点击A、B的内部后,所做成的面域与当前图层的颜色一致,同时,在命令行里也会出现已经做成面域的提示。

注意事项: 所有线段必须在交点处完全闭合 (二)、面域的操作 (1)合并面域——就是将多个分散的面域合为一体

如上图,如果要将A、B两个面域合并,可以使用菜单栏的“修改”→“实体编辑”→“并集”也可以使用“实体编辑”工具条中的“并集”命令

二值图像连通域标记快速算法实现

二值图像连通域标记快速算法实现 算法描述 首先,在进行标记算法以前,利用硬件开辟独立的图像标记缓存和连通关系数组,接着在视频流的采集传输过程中,以流水线的方式按照视频传输顺序对图像进行逐行像素扫描,然后对每个像素的邻域分别按照逆时针方向和水平方向进行连通性检测和等价标记关系合并,检测出的结果对标记等价数组和标记缓存进行更新,在一帧图像采集传输结束后,得到图像的初步标记结果以及初步标记之间的连通关系,最后,根据标号对连通关系数组从小到大的传递过程进行标号的归并,利用归并后的连通关系数组对图像标记缓存中的标号进行替换,替换后的图像为最终标记结果,并且连通域按照扫描顺序被赋予唯一的连续自然数。 图 1 标记算法流程 本文快速二值图像连通域标记算法分为三个环节: 1.图像初步标记:为每个像素赋予临时标记,并且将临时标记的等价关系记录在等价表中 2.整理等价表:这一环节分为两个步骤: (1)将具有等价关系的临时标记全部等价为其中的最小值; (2)对连通区域以自然数顺序重新编号,得到临时标记与最终标记之间的等价关系。 3.图像代换:对图像进行逐像素代换,将临时标记代换为最终标记.经过3个环节处理后,算法输出标记后的图像,图像中连通域按照由上到下,由左至右出现的顺序被标以连续的自然数。 1 图像初始标记 标记算法符号约定:算法在逆时钟方向检测连通域时用w1,w2表示连续两行的图像数据,在紧接着的顺时钟方向连通域检测时用k0,k表示连续两行经过

逆时钟方向标记后的图像数据。其在工作窗口的位置在图2、3中分别说明;对初始逆时针方向临时标记用Z表示。Z初始标记值为1。 二值图像连通域标记算法采用8连通判断准则,通过缩小标记范围剔除了图像的边界效应。为了简化标记处理过程,使标记处理在硬件对一帧图像传输操作时间内结束,标记处理利用中间数据缓存分为连续的两种类型,其中类型1用于直接图像序列传输,硬件发起图像序列传输时,类型1采用逆时钟顺序连通域检测,对2×3工作窗口中的二值像素进行初始标记。类型2对经过类型1初始标记过的图像数据再进行水平方向的连通域检测和归并,然后把标记结果存入图像存储区。 图像初始标记类型1: 步骤1读取像素w1(2)、w1(1)、w1(0)、w0(2)、w0(1),以及相应的二值像素值。 步骤2读取像素w0(1),按照逆时针方向依次与w1(0)、w1(1)、w1(2)、w0(2)比较,若w0(1)= w1(0),则k0(1)=k(2);若w0(1)= w1(1),则k0(1)=k(1);若w0(1)= w1(2),则k0(1)=k(0);若w0(1)= w0(2),则k0(1)=k0(0);否则(即w0(1)≠(w1(2)、w1(1)、w1(0)、w0(2)),k0(1)= Z;Z ++。 步骤3写入等价关系表,以Z为地址将Z写入等价关系数组。 图 2 逆时钟方向初始标记的工作窗 图像初始标记类型2: 步骤1判断经过逆时针方向标记后,如果w0(1)= w0(2)= 1,而标记灰度k0(1)≠k0(0),则进行下一步骤。 步骤2 假设k0(1)> k0(0),判断lab(k0(1))=k0(1)或者lab(k0(1))=k0(0),则lab(k0(1))=k0(0),否则对标记数组进行追踪置换。跳转至步骤3。 步骤3 假设k0(1)< k0(0),判断lab(k0(0))=k0(0)或者lab(k0(0))=k0(1),则lab(k0(0))=k0(1),否则对标记数组进行追踪置换。 追踪置换方法:步骤2的追踪置换令t= lab(k0(0));若lab(t)≠t,则

三年级周长和面积计算题库

周长和面积计算题库 1、一张长方形餐桌,长15分米,宽10分米,要配 上同样大小的桌布,这块桌布的面积应该是多少平方分米?在四周围上花边,花边的长度是多少? 2、一个长方形花坛,长是18米,宽比长短3米,这 个长方形花坛的面积是多少平方米? 3、教学楼大厅的墙壁,长7米,宽4米,墙上有一 块壁画,面积是3平方米,现在要粉刷这面墙壁,要粉刷的面积是多少平方米? 4、用一根长52厘米的绳子围成一个最大的正方形, 求这个正方形的面积是多少平方厘米? 5、有长方形菜地,一面靠墙,其余用长100米的篱 笆围着,已知这块地宽30米。求它的面积。6、一个长方形的面积是45平方分米,长是90厘米, 宽是多少厘米? 7、一个长方形的长是20厘米,是宽的4倍,这个长 方形的面积是多少平方分米? 8、一块稻田,边长为30米,如果每平方米收水稻25 千克,这块地可以收水稻多少千克? 9、一块正方形花布,边长是50厘米 (1)它的面积是多少平方厘米?合多少平方分米? (2)在上面减去一块长5分米,宽3分米的布,剩下部分的面积是多少?(画图)

9、一个长方形长是8厘米,面积32平方厘米,和它 周长相等的正方形的边长是多少? 10、红红的床长2米,宽15分米,夏天要铺上与 床同样大的凉席,这块凉席的面积是多少? 11、一张长方形包装纸,长是60厘米,比宽多 15厘米,它的面积是多少平方厘米?合多少平方分米? 12、一块桌布的面积是6平方分米,有3平方米 的布,能做多少块桌布? 13、一块长方形菜园长25米,宽14米,面积是 多少平方米?每平方米收4千克青菜,可以收多少千克青菜?14、有一个周长是16厘米的长方形,它是由三个 正方形拼成的,求这个长方形的面积?(画图) 15、一个长方形宽是6米,长是宽的3倍,这个 长方形的面积是多少? 16、一个长方形游乐场的面积是540平方分米, 长是90厘米,宽是多少? 17、用24厘米长的绳子围成一个长8厘米的长方 形,面积是多少平方厘米? 18、一块正方形菜地,边长是45米,如果每平方 米收蔬菜3千克,这块菜地可收多少千克?

基于连通域算法的区域测量

第8卷 第9期 2008年5月1671-1819(2008)9-2492-03  科 学 技 术 与 工 程 S c i e n c e T e c h n o l o g ya n d E n g i n e e r i n g  V o l .8 N o .9 M a y 2008 2008 S c i .T e c h .E n g n g . 基于连通域算法的区域测量 李仪芳 刘景琳 (广东技术师范学院电子与信息学院,广州510665) 摘 要 基于数字图像处理的原理,提出用八连通域算法对有多个连通区域的二值图像进行面积测量。通过逐行逐列地扫描图像,按照一定的规则标记连通区域,得到对象的个数,同时统计每个区域所含的像素,通过标尺转换可以得出区域的面积。结果表明,该算法能有效地提取八连通区域,可用于计算显微图像颗粒物的面积和粒径。关键词 区域标记 像素测量 八连通域算法中图法分类号 T P 391.77; 文献标识码 A 2008年1月21日收到 广东省第二批产业技术研究研发计划 项目(2007B 010200041)资助 第一作者简介:李仪芳(1983—),女,广东三水人,广东技术师范学院助教,硕士,研究方向:图像处理和光电技术。E -m a i l :a n g e l i -n a 2008@y a h o o .c o m .c n 二值图像中连通域的提取是图像处理和分析中的一个重要处理过程,可以用于显微图像的对象识别和测量,红外图像的目标定位等领域。灰度图像经过阈值分割后常包括多个连通的区域,需要将连通区域搜索标记出来以便测量。但常见算法是关于四连通区域的研究,其中文献[1,2]中描述或采用的是区域标号法,但文献[1]中描述的算法在实现时并不能达到预定的结果。而且区域生长法计算复杂度过高;像素标记法和行程标记法必须全部扫描完图像才能得到连通域,随着图像幅度和连通域个数的增加,计算复杂度增长。现提出用八连通域算法 [3] ,它不仅能在对图像一次扫描中标记连 通域即计算对象的个数,而且可实现边扫描边提取像素,即累计每个连通域所含像素的个数。 1 区域标记 算法实现逐行逐列扫描,对图像内每个连通的黑色区域进行标记操作,求得对象的数目。图1为6×12图像点阵,图中有三个连通区域,即三个对 象,分别用1,2,3标号。设前景点灰度取1,背景点取值为0。在算法中,定义了多个数组N (i ),其中i 代表连通区域的标号,∑N (i )表示区域内部包含的像素个数。如第1个区域,∑N (1)=7;对第2个区域,∑N (2)=6。下面以标记区域1为例,说明标记的具体算法。 图1 八连通域算法说明图 ① 初始化N (i )=0,i =0。② 从左到右,从上到下逐行扫描图像;如果没有遇到“1”,则继续扫描。若遇到“1”,如(1,1),则依次判断该像素点的

周长面积_积计算公式图解

小学数学几何形体周长 面积 体积计算公式 1、长方形 周长=(长+宽)×2 C=(a+b)×2 2、正方形 周长=边长×4 C=4a 3、长方形 面积=长×宽 S=ab 4、正方形 面积=边长×边长 S=a.a= a 2 5、三角形 面积=底×高÷2 6、平行四边形 面积=底×高 S=ah 7、梯形 面积=(上底+下底)×高÷2 S=(a +b )h÷2 8、圆 直径=半径×2 d=2r 半径=直径÷2 r= d÷2 长(a ) 宽(b ) 边长(a ) 长(a ) 宽(b ) 边长(a ) 高(h ) 底(a ) 高(h ) 底(a ) 高(h ) 上底(a ) 下底(b ) 上底(a ) 下底(b ) 直径(d ) 半径(r )

9、圆 周长=圆周率×直径=圆周率×半径×2 c=πd =2πr (π≈3.14) 10、圆 面积=圆周率×半径×半径 ?=πr (π≈3.14) 11、长方体 表面积=(长×宽+长×高+宽×高)×2 ?=(ab+ah+bh) ×2 12、长方体 体积 =长×宽×高 V =abh 13、正方体 表面积=棱长×棱长×6 S =6a 2 14、正方体 体积=棱长×棱长×棱长 V=a.a.a= a V=a.a.a= a 3 15、圆柱 侧面积=底面圆的周长×高 S=ch 半径(r ) 半径(r ) 长(a ) 宽(b ) 高(h ) 长(a ) 宽(b ) 高(h ) 棱长(a ) 底面周长(c ) 高(h ) 棱长(a )

16、圆柱 表面积=上下底面面积+侧面积 S=2πr +2πrh=2π(d÷2) +2π(d÷2)h=2π(C÷2÷π) +Ch 17、圆柱 体积=底面积×高 V=Sh=πr h=π(d÷2) h=π(C÷2÷π) h 18、圆锥 体积=底面积×高÷3 V=Sh=πr h=π(d÷2) h=π(C÷2÷π) h 19、长方体(正方体、圆柱体) 体积=底面积×高 V=Sh 底面积(s ) 高(h )高(h ) 底面积(s ) 底面积(s ) 高(h ) 底面积(s ) 底面积(s ) 高(h ) 高(h )

计算机图形学四连通区域种子填充算法实验

《计算机图形学实验》报告 任课教师:钱文华 2016年春季学期 实验:四连通区域种子填充算法 实验时间:2016年12月8日 实验地点:信息学院2204 实验目的:掌握种子填充算法的原理,并会用种子填充算法和opengl

并结合使用c++语言编写程序绘制多边形。 实验原理:种子填充算法又称为边界填充算法。其基本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止。如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。内点的检测条件:if(interiorColor!=borderColor&&interiorColor!=fillColor)。 种子填充算法常用四连通域和八连通域技术进行填充操作。从区域内任意一点出发,通过上、下、左、右四个方向到达区域内的任意像素。用这种方法填充的区域就称为四连通域;这种填充方法称为四向连通算法。从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下八个方向到达区域内的任意像素。用这种方法填充的区域就称为八连通域;这种填充方法称为八向连通算法。 一般来说,八向连通算法可以填充四向连通区域,而四向连通算法有时不能填充八向连通区域。 四向连通填充算法: a)种子像素压入栈中; b)如果栈为空,则转e);否则转c); c)弹出一个像素,并将该像素置成填充色;并判断该像素相邻的四连通像素是否为边界色或已经置成多边形的填充色,若不是,则将该像素压入栈; d)转b); e)结束。

四连通填充算法利用到了递归的思想。 本实验只包括四连通填充算法 程序代码:#include #include #include #include void init(void) { glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,300.0,0.0,300.0); } void setPixel(int x,int y,long fillColor){ glColor3f(fillColor<<16,fillColor<<8,fillColor); glBegin(GL_POINTS); glVertex2i(x,y); glEnd(); } void boundaryFill4(int x,int y,long fillColor,long borderColor) { unsigned char params[3]; long interiorColor; glReadPixels(x,y,1,1,GL_RGB,GL_UNSIGNED_BYTE,params); interiorColor=RGB(params[0],params[1],params[2]); if(interiorColor!=borderColor&&interiorColor!=fillColor)

周长面积体积计算公式

长方形的周长=(长+宽)×2 正方形的周长=边长×4 长方形的面积=长×宽 正方形的面积=边长×边长 三角形的面积=底×高÷2 平行四边形的面积=底×高 梯形的面积=(上底+下底)×高÷2 直径=半径×2 半径=直径÷2 圆的周长=圆周率×直径= 圆周率×半径×2 圆的面积=圆周率×半径×半径 长方体的表面积= (长×宽+长×高+宽×高)×2 长方体的体积=长×宽×高 正方体的表面积=棱长×棱长×6 正方体的体积=棱长×棱长×棱长 圆柱的侧面积=底面圆的周长×高 圆柱的表面积=上下底面面积+侧面积 圆柱的体积=底面积×高 圆锥的体积=底面积×高÷3 长方体(正方体、圆柱体)的体积=底面积×高 平面图形 名称符号周长(C)和面积(S)正方形(a)边长C=4a S=a2

长方形(a和b)边长C=2(a+b) S=ab 三角形(a,b,c)三边长 h-a边上的高 s-周长的一半 A,B,C-内角 其中s=(a+b+c)/2 S=ah/2 =ab/2·sinC =[s(s-a)(s-b)(s-c)]1/2 =a2sinBsinC/(2sinA) 四边形d,D-对角线长 α-对角线夹角S=dD/2·sinα 平行四边形a,b-边长 h-a边的高 α-两边夹角S=ah =absinα 菱形a-边长 α-夹角 D-长对角线长 d-短对角线长S=Dd/2 =a2sinα 梯形a和b-上、下底长 h-高

m-中位线长S=(a+b)h/2 =mh 圆r-半径 d-直径C=πd=2πr S=πr2 =πd2/4 扇形r—扇形半径 a—圆心角度数 C=2r+2πr×(a/360) S=πr2×(a/360) 弓形l-弧长 b-弦长 h-矢高 r-半径 α-圆心角的度数S=r2/2·(πα/180-sinα) =r2arccos[(r-h)/r] - (r-h)(2rh-h2)1/2 =παr2/360 - b/2·[r2-(b/2)2]1/2 =r(l-b)/2 + bh/2 ≈2bh/3 圆环R-外圆半径 r-内圆半径 D-外圆直径

平面图形的周长和面积计算公式及其变形学习资料

平面图形的周长和面积计算公式 及其变形 长方形 已知长和宽,求周长。 周长=(长+宽)×2 已知周长和长,求宽。 宽=周长÷2-长 已知周长和宽,求长。 长=周长÷2-宽。 已知长和宽,求面积。 面积=长×宽。 已知面积和长,求宽。 宽=面积÷长。 正方形 已知边长,求周长。 周长=边长×4。 已知周长,求边长。 边长=周长÷4。 已知边长,求面积。 面积=边长×边长。 三角形 已知三角形的底和这条底上高,求面积。 面积=底×高÷2。 已知三角形的面积和底,求高。 高=面积×2÷底。 已知三角形的面积和高,求底。 底=面积×2÷高。 特别地,在直角三角形中: 直角三角形的面积=两条直角边的积÷2 (在直角三角形中,两条比较短的边就是直角边) 平行四边形 已知平行四边形的底和这条底上高,求面积。 面积=底×高。 已知平行四边形的面积和底,求这条边上的高。 高=面积÷底。 已知平行四边形的面积和高,求这条边上的底。 底=面积÷高。 关于三角形和平行四边形的有关结论 1、如果一个三角形和一个平形四边形等底等高,那么:三角形的面积等于平行四边形面积的一半;平行四边形的面积就等于三角形面积的2倍。 例如:一个三角形和平行四边形等底等高,如果三角形的面积是10平方分米,则平行四边形的面积就是20平方分米。 2、如果一个三角形和一个平行四边形面积相等,高也相等,那么三角形的底就等于平行四边形底的2倍;平行四边形的底就等于这个三角形的底的一半。 3、如果一个三角形和一个平行四边形面积相等,底也相等,那么三角形的高就是这个平行四边形高的2倍;平行四边形的高就是这个三角形的高的一半。 梯形的面积公式及其变形 1、已知梯形的上底、下底和高,求面积。 梯形的面积=(上底+下底)×高÷2。 2、已知梯形的面积、上底、下底,求高。 梯形的高=面积×2÷(上底+下底) 3、已知梯形的面积、高、上底,求下底。 梯形的下底=面积×2÷高-上底。 4、已知梯形的面积、高、下底,求上底。 梯形的上底=面积×2÷高-下底。 5、已知梯形的高和上下底之和,求梯形的面积。 梯形的面积=上下底的和×高÷2 经典题回顾。 如图,靠墙边建有一个梯形养鸡场,已知篱笆的长度是60米,求这个养鸡场的面积是多少。 墙 10米

各种面积计算公式

各种面积计算公式 各种面积计算公式 长方形的周长=(长+宽)×2 正方形的周长=边长×4 长方形的面积=长×宽 正方形的面积=边长×边长 三角形的面积=底×高÷2 平行四边形的面积=底×高 梯形的面积=(上底+下底)×高÷2 直径=半径×2 半径=直径÷2 圆的周长=圆周率×直径 圆周率×半径×2 圆的面积=圆周率×半径×半径 长方体的表面积= (长×宽+长×高+宽×高)×2 椭圆的面积S=πab的公式求椭圆的面积。a=b时, 当长半径a=3(厘米),短半径b=2(厘米)时,其面积S=3×2×π=6π(平方厘米)。 长方体的体积=长×宽×高 正方体的表面积=棱长×棱长×6 正方体的体积=棱长×棱长×棱长

圆柱的侧面积=底面圆的周长×高 圆柱的表面积=上下底面面积+侧面积 圆柱的体积=底面积×高 圆锥的体积=底面积×高÷3 长方体(正方体、圆柱体) 的体积=底面积×高 平面图形 名称符号周长C和面积S 正方形a—边长C=4a S=a2 长方形a和b-边长C=2(a+b) S=ab 三角形a,b,c-三边长 h-a边上的高 s-周长的一半 A,B,C-内角 其中s=(a+b+c)/2 S=ah/2 =ab/2·sinC =[s(s-a)(s-b)(s-c)]1/2 =a2sinBsinC/(2sinA) 四边形d,D-对角线长α-对角线夹角S=dD/2·sinα 平行四边形a,b-边长

h-a边的高 α-两边夹角S=ah =absinα 菱形a-边长 α-夹角 D-长对角线长 d-短对角线长S=Dd/2 =a2sinα 梯形a和b-上、下底长h-高 m-中位线长S=(a+b)h/2 =mh 圆r-半径 d-直径C=πd=2πr S=πr2 =πd2/4 扇形r—扇形半径 a—圆心角度数 C=2r+2πr×(a/360) S=πr2×(a/360) 弓形l-弧长 b-弦长

相关文档
最新文档