当前位置:首页 » 操作系统 » 膨胀算法

膨胀算法

发布时间: 2022-01-30 06:06:08

❶ 问一下关于腐蚀和膨胀算法的问题

求算法复杂度一般不会使用计算机进行验证而是分析程序运行所需要的机器指令个数与输入的数据之间的函数关系。如果你想编写一个程序来寻找提高速度的算法,我想是本末倒置了。首先你得有几个正确的算法,然后才能为这几个算法分别编程,最后使用测试案例来验证哪个算法的性能更好些。

❷ 数字图像处理里的腐蚀和膨胀到底是指什么

膨胀
定义: D = X ⊕ S = { x,y | Sxy∩X ≠Ф}
意义:当结构元素 S 的原点移动到( x,y)位置,如果 S与物体X有任何一点同时为 1,则新图象上相应点为 1;如果 S与 X完全没有相交,新图象上点为 0。
算法:
用结构元素,扫描图像的每一个像素
用结构元素与其覆盖的二值图像做 “或”操作。
如果都为0,结果图像的该像素为0。否则为 1。
S是由B映像的位移与X至少有一个像素相同时B的中心点位置的集合。
膨胀的作用:
用 3x3的结构元素时,使物体的边界沿周边增加一个像素。
把图象周围的背景点合并到物体中。如果两个物体距离比较近,通过膨胀可能连通在一起。
对于填补图象分割后物体中的空洞十分有用
腐蚀
定义: E = X Θ S = { x,y | Sxy⊆X}
意义:当结构元素 S 的原点移动到(x,y)位置,如S 完全包含在 X 中,则新图象上该点为 1,否则为 0。
算法:
用结构元素,扫描图像的每一个像素
用结构元素与其覆盖的二值图像做 “与”操作。
如果都为 1,结果图像的该像素为 1。否则为 0。
结果图像E是由S完全包括在X中时S的当前位置的集合
作用:
用 3x3的结构元素时,使物体的边界沿周边减少一个像素。
去掉小于结构元素的物体,选择不同大小的结构元素,可以去掉大小不同的物体。
如果两物体之间有细小的连通,当结构元素足够大时,可以将物体分开。
不同的结构元素,可导致不同的结果。

❸ 怎么计算中国通货膨胀率

通货膨胀率=(T时期价格矫正指数-(T-1)时期价格矫正指数)除以(T-1)时期价格矫指正指数
其中,价格矫正指数指名义GDP与实际GDP的比

❹ 通货膨胀算法。。。求指教!!!!!!!!!!!!

房价指数的增长率其实是通货膨胀率+实际增长率。
所以房价指数的实际增长率等于:
216/182-(1+0.016)=0.171,意味着房价实际增长率为17.1%

❺ 图像处理中的腐蚀与膨胀是什么意思

图像处理分为多种,对于不同的图像腐蚀和膨胀的定义不同。

1、形态学图像处理是在图像中移动一个结构元素,然后将结构元素与下面的二值图像进行交、并等集合运算;先腐蚀后膨胀的过程称为开运算。

它具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用。先膨胀后腐蚀的过程称为闭运算。它具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。

2、对灰度图像的膨胀(或腐蚀)操作有两类效果:

(1)如果结构元素的值都为正的,则输出图像会比输入图像亮(或暗);

(2)根据输入图像中暗(或亮)细节的灰度值以及它们的形状相对于结构元素的关系,它们在运算中或被消减或被除掉。

腐蚀就是使用算法,将图像的边缘腐蚀掉。作用就是将目标的边缘的“毛刺”踢除掉。

膨胀就是使用算法,将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。

使用相同次数的腐蚀与膨胀,可以使目标表面更平滑。

(5)膨胀算法扩展阅读:

1、图像变换:由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理。

目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。

2、图像编码压缩:图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。

压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。

3、图像增强和复原:图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。

如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像

参考资料来源:网络-图像处理

❻ 地球膨胀运动的参数算法与膨胀阶段划分

在论证了地球的胀缩运动以后,有关地球膨胀运动的计算及其算法、地球膨胀阶段的划分等就成为人们必须考虑的主题。

在本节里,将讨论地球膨胀阶段的地球表面积、体积、半径等参数的改变量计算方法,对如何根据实际资料求取地球膨胀的数值等技术手段做出说明,并列出相关计算公式。根据以往的研究成果对地球膨胀阶段的划分提出新的认识,将地球的膨胀划分为:表面积扩充阶段、体积扩充阶段、岩浆外溢量持续增大阶段、岩浆外溢量持续减小阶段、地球收缩阶段等。地球的膨胀过程既不是半径一概增大的过程,也非单调减小的过程,而是一种受周期性函数作用力控制的,地球半径在“增加一减小—增加—减小”的循环往复中逐渐增长。

1.膨胀参数的求取

地球膨胀的证据为我们提供了分析研究地球膨胀量的强有力资料。

在尚未论述洋中脊和海沟的特点与形成原因之前,首先假设以下条件成立:

(1)洋中脊是地球膨胀时期的产物,洋中脊的扩张范围就是地球的膨胀表面积之一。

(2)海沟是板块与板块结合地带,是一种向地幔层方向褶皱的“负向山脉”,它与洋中脊不是同期产物。

(3)假设地球膨胀时期的造山运动大约等于零,地球的表面积缩小量约为零。

(4)假设地球膨胀时期相邻两陆块之间若不被后期的洋中脊分开,就不存在显着的分离。

于是,地球的膨胀参数可以按照如下方法获得:

1.1地球膨胀所产生的表面积改变量(△S)

设地球收缩后且膨胀前的表面积为SA,地球膨胀运动结束后且开始膨胀前的表面积为SB,则地球膨胀运动所产生的表面积改变量

图4-4莱茵地堑综合剖面图

(a)地温剖面图(据Illies,1965);(b)布格异常剖面(据Mieller等,1967);(c)磁测剖面(据Roche和Wohlehberg,1969);(d)地质剖面1(据Mueller,1969);(e)地质剖面2(据Sittler,1967);(f)总体剖面(据Illies,1967)

地球动力与运动

式中,各变量单位均为km2

式(4-1)是一个理论方程,实际工作中是没法操作的。在实际工作中,地球表面积的改变量可按下式求取:

地球动力与运动

或者:

地球动力与运动

式中,S1,S2,S3,…,Sn等在形成时期、单位等方面具有一致性。可以进行如下约定:

S1——洋中脊扩张范围面积(km2);

S2——板块之间裂谷范围面积(km2);

S3——板块内部裂谷范围面积(km2);

S4——板块内部地堑范围面积(km2);

S5——板块内部所有正断裂平面张开范围面积(km2);

Sn——相当于式(4-2)中的δ,其他可能遗漏的因地球膨胀产生的未单独列出的面积(km2)。取n=6,则Sn=S6,即地球膨胀的表面积增加包括6方面内容。那么式(4-2)、式(4-3)可改为:

地球动力与运动

求S1

依据假设条件,洋中脊的扩张范围就是地球的膨胀表面积,只要求得洋中脊的范围面积,即求得了S1。显然:

地球动力与运动

式中,S11,S12,S13,…,S1n等,分别代表不同洋脊的扩张范围面积,如:北太平洋洋脊、南太平洋洋脊、智利洋脊、印度洋—太平洋洋脊等等。下面以北太平洋洋脊为例,说明如何计算洋脊的扩张范围:

地球膨胀发展到一定程度,首先引起固态岩石圈的张开,洋中脊的产生与发展则建立在板块或板块间的破裂基础上,随着地球的膨胀,“液”态的地幔物质膨胀速度大于固态物质的膨胀速度,因而岩浆顺着板块间的裂口向“外”拓展空间,以平衡因膨胀而产生的体积增量,这种过程在地球膨胀期内将不断地进行,在进行过程中,外逸的岩浆不断地排开最初的板块裂口,使板块之间的距离越来越大,当地球膨胀停止时,在原来的状态下,出现了扩张后的大面积增量,即为所求增量。板块最初的裂纹无疑是岩浆填充时的背景,由于板块最初的裂纹不同,洋中脊具有不同的扩张形态,其中被人们称为转换断层的裂缝,即是最初的裂纹呈折线的结果。只要圈定出板块最初裂纹,即求得了洋中脊的扩张范围,再用求积仪计算圈线所占面积。

完成全球各洋脊的扩张范围面积计算,即求得了S1

采用找最初弥合线—圈线—计算面积的办法,同样施于对S2、S3、S4、S5、S6的求取,最后对所得各类面积用式(4-4)累加,即可获得地球膨胀后地球表面积的扩张增量。

1.2地球膨胀所产生的体积改变量(△V)

在获得了地球膨胀的表面积增量后,求取体积的增量显得简单一些。为了便于分析,先看几条剖面图(见图4-5)。

图4-5几条过洋中脊的地形剖面(据Heirtzler,1966)

(a)大西洋剖面(据米康,1962);(b)东太平洋剖面(据H.W.米纳德,1969);(c)南太平洋剖面

三条不同海域的过洋中脊的地形图,是各地洋中脊不断变化形成的缩影,显而易见,他们共同具有的特征就是从洋中脊中心向两侧逐渐变缓,形成了中间高、两侧低的势态,这是地幔物质因膨胀、体积变大、外逸卸载所造成。因此,在计算地球膨胀的体积改变量时,应按照如下算式计算(见图4-6):

地球动力与运动

式中:V1——由表面积改变量换算所得体积改变量,单位:km3。换算式如下:

地球动力与运动

V2——洋中脊的多余外逸量,单位:km3。算式如下:

地球动力与运动

ζ——调节数,单位与其他项一致,为遗漏量或计算误差,可正可负,其绝对值相比之下应为小。

式(4-7)中,RA为地球膨胀前的地球半径;R为地球膨胀后地壳半径的伸长量。由于地壳的张裂,地幔膨胀一方面通过地壳的裂口外逸部分岩浆,另一方面直接将地壳向“外”推开而扩展自身空间,R即为这种效应的改变量;RB为地球膨胀后最终量,与R之间的增量等于洋中脊在RB之外的多余量,它是洋中脊的凸隆体积部分碾平后覆盖地球表面所形成的厚度值(参阅图4-6)。

图4-6地球膨胀参数关系

式(4-9)中,i值的改变表示洋中脊的不同,不同的洋中脊有不同的分布范围和不同的高度、不同的体积,计算式如下:

地球动力与运动

式中,S为洋中脊的横断面面积;dl为微元的长度。

1.3地球膨胀所产生的半径改变量(△R)

由图4-6可知,地球膨胀运动所产生的地球半径的改变量计算式为:

地球动力与运动

也可由下式计算:

地球动力与运动

式中,RA或RB可以通过现代地球物理探测方法获得,按照地球目前处于近银点附近的一般观点,地球正处于地球收缩期,地球现在的半径测值既不是RA,也不是RB,要想获得RA或RB,还要计算地球在喜马拉雅造山运动时期的地球半径改变量。

地球半径的改变量也可以通过体积改变量和表面积改变量直接计算获得。

2.地球的膨胀阶段划分

自从人们认识了地球曾经发生过膨胀运动后,有关地球膨胀的模式就一直成为人们探求的课题。在本书内容形成以前,有四种膨胀模式较为突出:单一膨胀式、非对称膨胀式(凯里模式)、威廉斯模式、脉冲膨胀式。四种有关地球的膨胀模式,由于缺乏系统理论的指导,尽管在某一方面或某几方面考虑周到,但总不能避免局限性,有时甚至出现不能自圆其说的局面。

我们说地球的膨胀体现有两种,一种是短周期的膨胀,主要是由于地球绕太阳运行受太阳的作用而引起,体现在地球大气层的变化上;另一种是长周期的膨胀,主要是由于地球绕银核运行受银核的作用而引起,体现在地球的岩石圈的变化上。地球膨胀是由于地球受到了膨胀力作用,这种作用力实质上是一种胀缩力。在地球轨道一周内,一段时期表现为膨胀力作用,而在另一段时期内则表现为压缩力作用。地球所受膨胀力既不是一概增大的过程,也不是单调减小的过程,而是在压缩力之后表现为单调增加,当达到极大值后又表现为单调减小,是一种含周期性函数特征的作用力,在这种力作用下,地球的膨胀表现在地球半径的增量△R随时间呈一种幅度、跨度为非对称的曲线形态,这种形态可用图4-7加以示意,由此可见,在地史长河中,地球的半径在“增加—减小—增加—减小”的循环往复中逐渐地增长。

图4-7膨胀过程中地球半径增量随时间变化关系曲线示意图

膨胀力作用于地球使地球发生膨胀的过程可分为四个阶段:表面积扩充阶段、体积扩充阶段、膨胀力持续增大作用阶段、膨胀力持续减小直至为零作用阶段,各阶段用图简示如图4-8。

图4-8陆块的张裂过程

1—地球膨胀使陆块分裂而增加地球表面积;2—地球继续膨胀使地幔外逸而增加地球体积;3—地球受不断增大的膨胀作用,地球表面积、体积体积变大的同时、岩浆大量外逸,洋中脊越来越向外凸出;4—地球仍在膨胀,但作用力逐渐变小,岩浆外逸量逐渐减小,洋中脊向内凹进

2.1表面积扩充阶段

地球的表面积扩充阶段是指地球从地壳发生张裂开始到岩浆从裂谷中逸出前的阶段。

地球受到膨胀力作用后,地球的各个层圈都将发生膨胀改变,这些改变量全部体现在包裹在外的地壳上,由于膨胀所引起的体积增加必须通过表面积的增加来完成,所以,作为刚性体的地壳发生张裂,张裂氛围板间张裂和板内张裂,张裂逐渐加深加宽,一方面完成了体积增量的空气填充,主要的一方面是使地球的表面积得到了扩张。这样的张裂过程在地球膨胀的最初阶段,随着地球体积的变大,由裂缝—裂口—裂谷逐渐展开的(图4-9)。

图4-9板块的破裂与运动过程

A—板块在地球的胀缩力作用下在中部发生破裂;B—随着持续膨胀,裂缝形成开口;C—形成裂谷

2.2体积扩充阶段

地球的体积扩充阶段是指岩浆从裂谷中逸出开始,到岩浆停止持续流出为止。这一阶段实质上包含了后面即将谈到的两个阶段。

尽管地球的体积膨胀从理论上讲是在地球受膨胀力作用开始的瞬间就已经开始,但却无法在实际中将这一起点划分出来。将地球的体积扩充阶段的起点定在岩浆开始从裂谷中大量外逸,是具有实际意义和理论意义的。

2.3岩浆外逸量持续增大阶段

岩浆外逸量持续增大阶段是指岩浆从裂谷中大量逸出开始,到岩浆外逸量突然急剧下降前为止,在洋中脊变化曲线上表现为上升趋势出现急剧下降(如图4-10)。

图4-10大西洋洋中脊所表现的地球体积膨胀阶段

A—岩浆外逸量持续增大阶段;B—岩浆外逸量持续减小阶段

当裂谷中开始出现大量外逸的岩浆时,表明地球内部物质的体积增大速度大于地壳膨胀速度,地球的整体膨胀开始向新的动态发展。当膨胀力持续作用,内部物质体积膨胀量越来越大,由于地壳的重载使岩浆的外逸量越来越大,形成了从裂谷最初的外逸岩浆之处向洋中脊方向越来越凸出的地形特征(见图4-5)。

2.4岩浆外逸量持续减小阶段

岩浆外逸量持续减小直至为零的作用阶段是指岩浆外逸量突然急剧下降开始到岩浆停止持续流出为止(见图4-10)。

显然,图面显示出这一阶段在洋脊变化曲线上为非对称性,是可以理解的,岩浆的外逸从第三阶段到第四阶段,从一种动态平衡状态向另一种状态过渡,由于膨胀的增量出现减小,而地球各个圈层向外膨胀的边界条件(包括地壳板块的松散环境)、岩浆外逸口的大小等并没有发生改变,所以会出现各种对称与非对称的洋脊形态。

从时间上讲,图4-10中的A、B两阶段是不相等的;从膨胀的改变量来讲,A、B两阶段也是不相同的。图中距离长短的不一是因为B阶段为膨胀力作用的后期,地球尽管还在膨胀,但膨胀增量越来越小,经过了A阶段持续加大过程,这时,地球的持续减小的膨胀增量主要体现在地球半径的膨胀上,由于B阶段地球整体膨胀已经足以完成因膨胀力作用而产生的地球体积的改变量,所以,岩浆的外逸量越来越少,而A阶段则是因地球整体膨胀速度不足以平衡体积改变量。

2.5地球收缩阶段

地球结束了膨胀力作用,变成完全受收缩力作用的阶段,在此阶段,地球的半径持续变小。

3.关于地球的膨胀造山问题

如果说膨胀时期的地球也能造山的话,无疑这山是指洋中脊(也称海隆)了。地史上曾经出现过一种地球膨胀造山的说法,即马钦斯基(M.Matschinski,1953)所提出的观点。他是在地球膨胀说的氛围里提出的,其目的只是为了解释地球在膨胀时可以造山,尽管存在很多疑问,但这一观点却无疑给人一种新的思路。他认为,地球膨胀时由于膨胀速率不同,出现地幔膨胀后的曲率与地壳膨胀后的曲率不同而形成地壳的悬空,在重力作用下,板块的中部出现了推覆造山作用。马钦斯基的膨胀造山模式给人启发是:地球在膨胀时是有可能在局部地区发生造山作用的,如地球在潮汐力作用下,发生局部膨胀,当这种潮汐波传播走后,即可形成马钦斯基所描述的情形。当然,由潮汐力引起的局部膨胀在地球发生收缩运动时也可以产生。

以上论证了地球膨胀的有关参数计算问题,并进行了相关阶段的划分,采用的是一套归纳思维方法,主要根据已有的证据来求取变化参数,属于后验性,对预测帮助较小。后面还将提出一套根据地球所在轨道位置计算预测以后不同时间段内将要发生的变化及变化量的理论算法。

❼ 如何进行数字图像处理中的膨胀和腐蚀计算

腐蚀的算法:
用3x3的结构元素,扫描图像的每一个像素
用结构元素与其覆盖的二值图像做“与”操作
如果都为1,结果图像的该像素为1。否则为0。
结果:使二值图像减小一圈
定义:E = B  S = { x,y | SxyB}

膨胀的算法:
用3x3的结构元素,扫描图像的每一个像素
用结构元素与其覆盖的二值图像做“与”操作
如果都为0,结果图像的该像素为0。否则为1
结果:使二值图像扩大一圈
定义:E = B  S = { x,y | Sxy∩B ≠Ф}

膨胀源码

BOOL Dilation(HWND hWnd,BOOL Hori)

{

DWORD OffBits,BufSize;

LPBITMAPINFOHEADER lpImgData;

LPSTR lpPtr;

HLOCAL hTempImgData;

LPBITMAPINFOHEADER lpTempImgData;

LPSTR lpTempPtr;

HDC hDc;

HFILE hf;

LONG x,y;

unsigned char num;

int i;

//为了处理的方便,仍采用256级灰度图,不过只调色板中0和255两项

if( NumColors!=256){

MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!",

"Error Message",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

//BufSize为缓冲区大小

BufSize=OffBits+bi.biHeight*LineBytes;

//为新的缓冲区分配内存

if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)

{

MessageBox(hWnd,"Error alloc memory!","Error Message",

MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);

//拷贝头信息和位图数据

memcpy(lpTempImgData,lpImgData,BufSize);

if(Hori)

{

//在水平方向进行膨胀运算

for(y=0;y<bi.biHeight;y++){

//lpPtr指向原图数据,lpTempPtr指向新图数据

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes)+1;

lpTempPtr=(char*)lpTempImgData+

(BufSize-LineBytes-y*LineBytes)+1;

for(x=1;x<bi.biWidth-1;x++){

//注意为防止越界,x的范围从1到宽度-2

num=(unsigned char)*lpPtr;

//原图中是黑点的,新图中肯定也是,所以要考虑的是那些原图

//中的白点,看是否有可能膨胀成黑点

if (num==255){

*lpTempPtr=(unsigned char)255; //先置成白点

for(i=0;i<3;i++){

num=(unsigned char)*(lpPtr+i-1);

//只要左右邻居中有一个是黑点,就膨胀成黑点

if(num==0){

*lpTempPtr=(unsigned char)0;

break;

}

}

}

//原图中就是黑点的,新图中仍是黑点

else *lpTempPtr=(unsigned char)0;

//指向下一个象素

lpPtr++;

lpTempPtr++;

}

}

}

else{

//在垂直方向进行腐蚀运算

for(y=1;y<bi.biHeight-1;y++){ //注意为防止越界,y的范围从1到高度-2

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);

for(x=0;x<bi.biWidth;x++){

num=(unsigned char)*lpPtr;

if (num==255){

*lpTempPtr=(unsigned char)255;

for(i=0;i<3;i++){

num=(unsigned char)*(lpPtr+(i-1)*LineBytes);

//只要上下邻居中有一个是黑点,就膨胀成黑点

if(num==0){

*lpTempPtr=(unsigned char)0;

break;

}

}

}

else *lpTempPtr=(unsigned char)0;

lpPtr++;

lpTempPtr++;

}

}

}

if(hBitmap!=NULL)

DeleteObject(hBitmap);

hDc=GetDC(hWnd);

//产生新的位图

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData,

DIB_RGB_COLORS);

//起不同的结果文件名

if(Hori)

hf=_lcreat("c:\\hdilation.bmp",0);

else

hf=_lcreat("c:\\vdilation.bmp",0);

_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));

_lwrite(hf,(LPSTR)lpTempImgData,BufSize);

_lclose(hf);

//释放内存及资源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

腐蚀源码

BOOL Erosion(HWND hWnd,BOOL Hori)

{

DWORD OffBits,BufSize;

LPBITMAPINFOHEADER lpImgData;

LPSTR lpPtr;

HLOCAL hTempImgData;

LPBITMAPINFOHEADER lpTempImgData;

LPSTR lpTempPtr;

HDC hDc;

HFILE hf;

LONG x,y;

unsigned char num;

int i;

//为了处理方便,仍采用256级灰度图,不过只用调色板中0和255两项

if( NumColors!=256){

MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!",

"Error Message",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

//BufSize为缓冲区大小

BufSize=OffBits+bi.biHeight*LineBytes;

//为新的缓冲区分配内存

if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)

{

MessageBox(hWnd,"Error alloc memory!","Error Message",

MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);

//拷贝头信息和位图数据

memcpy(lpTempImgData,lpImgData,BufSize);

if(Hori)

{

//在水平方向进行腐蚀运算

for(y=0;y<bi.biHeight;y++){

//lpPtr指向原图数据,lpTempPtr指向新图数据

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes)+1;

lpTempPtr=(char*)lpTempImgData+

(BufSize-LineBytes-y*LineBytes)+1;

for(x=1;x<bi.biWidth-1;x++){

//注意为防止越界,x的范围从1到宽度-2

num=(unsigned char)*lpPtr;

if (num==0){ //因为腐蚀掉的是黑点,所以只对黑点处理

*lpTempPtr=(unsigned char)0; //先置成黑点

for(i=0;i<3;i++){

num=(unsigned char)*(lpPtr+i-1);

if(num==255){

//自身及上下邻居中若有一个不是黑点,则将该点腐

//蚀成白点

*lpTempPtr=(unsigned char)255;

break;

}

}

}

//原图中就是白点的,新图中仍是白点

else *lpTempPtr=(unsigned char)255;

//指向下一个象素

lpPtr++;

lpTempPtr++;

}

}

}

else{

//在垂直方向进行腐蚀运算

for(y=1;y<bi.biHeight-1;y++){ //注意为防止越界,y的范围从1到高度-2

//lpPtr指向原图数据,lpTempPtr指向新图数据

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);

for(x=0;x<bi.biWidth;x++){

num=(unsigned char)*lpPtr;

if (num==0){ //因为腐蚀掉的是黑点,所以只对黑点处理

*lpTempPtr=(unsigned char)0; //先置成黑点

for(i=0;i<3;i++){

num=(unsigned char)*(lpPtr+(i-1)*LineBytes);

if(num==255){

//自身及上下邻居中若有一个不是黑点,则将该点腐

//蚀成白点

*lpTempPtr=(unsigned char)255;

break;

}

}

}

//原图中就是白点的,新图中仍是白点

else *lpTempPtr=(unsigned char)255;

//指向下一个象素

lpPtr++;

lpTempPtr++;

}

}

}

if(hBitmap!=NULL)

DeleteObject(hBitmap);

hDc=GetDC(hWnd);

//产生新的位图

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);

//起不同的结果文件名

if(Hori)

hf=_lcreat("c:\\herosion.bmp",0);

else

hf=_lcreat("c:\\verosion.bmp",0);

_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));

_lwrite(hf,(LPSTR)lpTempImgData,BufSize);

_lclose(hf);

//释放内存及资源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

❽ 如何计算通货膨胀率

通货膨胀,是一种货币现象,指货币发行量超过流通中实际所需要的货币量而引起的货币贬值现象。通货膨胀与物价上涨是不同的经济范畴,但两者又有一定的联系,通货膨胀最为直接的结果就是物价上涨。

通货膨胀率(Infation Rate)是货币超发部分与实际需要的货币量之比,用以反映通货膨胀、货币贬值的程度;而价格指数则是反映价格变动趋势和程度的相对数。

经济学上,通货膨胀率为:物价平均水平的上升幅度(以通货膨胀为准)。以气球来类比,若其体积大小为物价水平,则通货膨胀率为气球膨胀速度。或说,通货膨胀率为货币购买力的下降速度。

在实际中,一般不直接、也不可能计算通货膨胀,而是通过价格指数的增长率来间接表示。由于消费者价格是反映商品经过流通各环节形成的最终价格,它最全面地反映了商品流通对货币的需要量,因此,消费者价格指数是最能充分、全面反映通货膨胀率的价格指数。目前,世界各国基本上均用消费者价格指数(我国称居民消费价格指数),也即CPI来反映通货膨胀的程度。

通货膨胀率计算公式

通货膨胀率=(现期物价水平—基期物价水平)/基期物价水平

其中基期就是选定某年的物价水平作为一个参照,这样就可以把其他各期的物价水平通过与基期水平作一对比,从而衡量现今的通货膨胀水平。其实,上面所说的只是三种衡量通货膨胀水平方法之一的消费指数折算法,但它是最常用的,此外还有GDP折算法和生产指数折算法。

在国家统计局网站可以了解到通货膨胀率。

❾ 通货膨胀率计算公式

以(t-1)时期的CPI指数为基期,

找到t时期的CPI指数

t时期通货膨胀率=【t时期的CPI 指数-(t-1)时期 的CPI指数】/(t-1时期的CPI指数)*100%

例如:t时期的CPI 指数为10%,(t-1)时期 的CPI指数为5%,则t时期通货膨胀率=(10%-5%)/5%*100%,即t时期通货膨胀率为2%。
采纳哦谢谢

❿ 数字图像处理 膨胀和腐蚀算法的实现

腐蚀的算法:
用3x3的结构元素,扫描图像的每一个像素
用结构元素与其覆盖的二值图像做“与”操作
如果都为1,结果图像的该像素为1。否则为0。
结果:使二值图像减小一圈
定义:E = B  S = { x,y | SxyB}

膨胀的算法:
用3x3的结构元素,扫描图像的每一个像素
用结构元素与其覆盖的二值图像做“与”操作
如果都为0,结果图像的该像素为0。否则为1
结果:使二值图像扩大一圈
定义:E = B  S = { x,y | Sxy∩B ≠Ф}

热点内容
单片机android 发布:2024-09-20 09:07:24 浏览:760
如何提高三星a7安卓版本 发布:2024-09-20 08:42:35 浏览:660
如何更换服务器网站 发布:2024-09-20 08:42:34 浏览:306
子弹算法 发布:2024-09-20 08:41:55 浏览:284
手机版网易我的世界服务器推荐 发布:2024-09-20 08:41:52 浏览:813
安卓x7怎么边打游戏边看视频 发布:2024-09-20 08:41:52 浏览:158
sql数据库安全 发布:2024-09-20 08:31:32 浏览:90
苹果连接id服务器出错是怎么回事 发布:2024-09-20 08:01:07 浏览:503
编程键是什么 发布:2024-09-20 07:52:47 浏览:655
学考密码重置要求的证件是什么 发布:2024-09-20 07:19:46 浏览:479