开运算原理,什么是开运算和闭运算

2023-10-31崇庆运势网热度: 15616

计算器开方原理?

根据泰勒公式,把那些乱七八糟的开方,三角,指数什么的运算都近似成为让计算器容易算的由加法和乘法组成的表达式。

CPU计算原理是?

在了解CPU工作原理之前,我们先简单谈谈CPU是如何生产出来的。CPU是在特别纯净的硅材料上制造的。一个CPU芯片包含上百万个精巧的晶体管。人们在一块指甲盖大小的硅片上,用化学的方法蚀刻或光刻出晶体管。因此,从这个意义上说,CPU正是由晶体管组合而成的。简单而言,晶体管就是微型电子开关,它们是构建CPU的基石,你可以把一个晶体管当作一个电灯开关,它们有个操作位,分别代表两种状态:ON(开)和OFF(关)。这一开一关就相当于晶体管的连通与断开,而这两种状态正好与二进制中的基础状态“0”和“1”对应!这样,计算机就具备了处理信息的能力。
但你不要以为,只有简单的“0”和“1”两种状态的晶体管的原理很简单,其实它们的发展是经过科学家们多年的辛苦研究得来的。在晶体管之前,计算机依靠速度缓慢、低效率的真空电子管和机械开关来处理信息。后来,科研人员把两个晶体管放置到一个硅晶体中,这样便创作出第一个集成电路,再后来才有了微处理器。
看到这里,你一定想知道,晶体管是如何利用“0”和“1”这两种电子信号来执行指令和处理数据的呢?其实,所有电子设备都有自己的电路和开关,电子在电路中流动或断开,完全由开关来控制,如果你将开关设置为OFF,电子将停止流动,如果你再将其设置为ON,电子又会继续流动。晶体管的这种ON与OFF的切换只由电子信号控制,我们可以将晶体管称之为二进制设备。这样,晶体管的ON状态用“1”来表示,而OFF状态则用“0”来表示,就可以组成最简单的二进制数。众多晶体管产生的多个“1”与“0”的特殊次序和模式能代表不同的情况,将其定义为字母、数字、颜色和图形。举个例子,十进位中的1在二进位模式时也是“1”,2在二进位模式时是“10”,3是“11”,4是“100”,5是“101”,6是“110”等等,依此类推,这就组成了计算机工作采用的二进制语言和数据。成组的晶体管联合起来可以存储数值,也可以进行逻辑运算和数字运算。加上石英时钟的控制,晶体管组就像一部复杂的机器那样同步地执行它们的功能。
CPU是Central Processing Unit的缩写,是中央处理器的意思。我们经常听人谈到的486,Pentium就是CPU 。CPU是一个电子元件,其规格就标注在元件上或元件的包装盒上,如i80486DX2-66这行编号就代表了这颗处理器是Intel公司制造的486等级的CPU,它的最高工作频率是66Mhz;又如K6-200的CPU,代表了这颗是AMD公司制造的586MMX级的CPU,它的最高工作频率是200Mhz。
CPU的工作原理其实很简单,它的内部元件主要包括:控制单元,逻辑单元,存储单元三大部分。指令由控制单元分配到逻辑运算单元,经过加工处理后,再送到存储单元里等待应用程序的使用。
为了增加CPU的执行效能各厂商发展出很多技术。例如:
1、多个运算单元同时进行运算。
2、管线功能:让指令或资料同时多笔准备好。
3、预先存取功能:当程序或资料还没有执行到时,便预先取得并存于CPU内。
4、预测功能:预测程序会执行的路径预先把资料先取回来。
5、多媒体功能:把一些以往由专业多媒体芯片的功能加入CPU。 例如 Intel 的 MMX。
以下是常见的CPU厂家:
1、Intel
2、AMD
3、Cyrix(已被VIA收购)
4、IDT(已被VIA收购)
评判CPU的性能好坏的几个主要参数包括超频、内存总线速度、扩展总线速度、工作电压、地址总线宽度、数据总线宽度、内置协处理器、超标量、L1高速缓存、采用回写。超频:CPU的频率包括主频、外频、倍频。外频即系统总线的工作频率,主频即CPU内部的工作频率:外频=主频×倍频。现在一般的标准外频包括66Mhz 133Mhz 100Mhz。标准的倍频包括:2、2.5、3、3.5、4、4.5、5等。
“超频”乃是当前众多DIYer们的口头禅,但同时又令许多对电脑了解不多的人感到困惑。下面我就简单为大家介绍一下“超频”。
“超频”就是强制CPU在高于标称频率的频率下工作,通过提高计算机主频来提高计算机的性能。但现在DIYer们已把超频扩到了更大的领域,除了CPU,AGP卡、PCI介面卡、DRAM甚至于硬盘等都因为CPU外频提升而工作在规格以上的频率,从广义上讲这都叫做超频。
下面我就先从CPU的超频谈起。提高CPU的工作频率有两种方法:提高倍频系数和提高外部总线频率。
外部总线频率就是我们常说的66MHz、75MHz、83MHz、100MHz,甚至更高。倍频系数就是CPU的工作频率和CPU内部频率的比值,比如3倍频、3. 5倍频等。如赛扬300A的工作频率是300Mhz,其内部频率是66Mhz,倍频数为4.5。那么是否每一个CPU都能超频,超频又需要什么条件呢?一般来说Intel公司生产的CPU的超频性能最好,一般都可以稳定地向上超两个等级;而其他几家的产品超频性则弱的多,有些甚至根本不能超。因为超频会使CPU和电脑的其它部件在超额状态下工作,所以选用质量好的部件是超频成功的关键。
为了超频,一般来说名牌主板是你最好的选择,如升技的BH6、BX2,技嘉的GBBX2000,华硕的P2B等,他们不仅做工精良,且支持多种外频。名牌主板虽然性能优异,但价格昂贵,如果囊中羞涩,则可选择较便宜的主板,如华基、麒麟等,它们也有不错的超频能力。此外,在选择主板时,最好选择具有软跳线功能的主板。使用软跳线的主板在改变CPU工作频率时就不用在复杂的主板电路上寻觅那些不起眼的跳线了。
超频的另一瓶颈就是内存,早期的72线EDO内存超频能力一般,最多能上到75Mhz外频,能跑83Mhz外频的少之又少。现在的168线SDRAM内存又分为PC100和非PC100两种。一般来说PC100的要比非PC100的贵几十元。不过为了机器能够稳定地运行在100MHz或更高频率上,PC100内存是必不可少的。PC100内存又有不同的规格,它们的速度不一样。从理论上说,CPU要想稳定地运行在100MHz外频下,内存速度必须是-10以上的。(所谓-10就是指内存的工作周期为10ns,以下同理。)因为1秒除以100M等于10纳秒。同理,你若想使用125MHz外频,则内存速度必须是-8以上的。现在市面上的内存有不少标称自己是-7的,但实际上只有三星的KMXXXSXXXXBT-G7等几个名牌型号才是真正的7ns的,其它的则都是奸商们通过打磨,使10ns的 SDRAM产品披上了7ns的外衣。
硬盘也是超频路上的一道坎。总的来说,各种硬盘的较新型号都有较强的超频能力,而早期产品则超频性能不佳。在各种硬盘中,笔者向大家推荐昆腾系列硬盘,一直以来昆腾就以较强的超频能力著称于世。尤其是其火球七代和火球八代超频性能更是出众。
超频成功与否还与其他设备密切相关。在一台计算机中还有各种各样的板卡。它们采用不同的总线接口,如现在流行的AGP显卡。AGP接口的标准频率是66.6MHz,它的工作频率与CPU的外部总线频率之比是1:1或1.5:1。当CPU工作在133MHz外频时,它的工作频率将会高达88.6MHz,这对AGP显卡来说无疑是一种考验。当使用 PCI卡时,如工作频率达到100MHz,则会使用3分频,既100除以3,等于33.3MHz。所以在133MHz下,PCI卡的工作频率将是44.3MHz,高于标准的33.3MHz达30%,如此苛刻的条件并不是每一种PCI卡都能承受的。
如果你的电脑配件都能达到上述条件,那么恭喜你,你已经达到了超频的基本条件。但这并不意味着你的超频一定成功。使电脑各部件超负荷运转,必然会产生大量的热。而热则是各种电子部件的大敌,当温度达到80摄氏度,就会发生电子转移现象,从而损坏设备。用手摸摸你的CPU吧,如果它的表面温度已达到了50至60摄氏度,则它的内部温度已经到了80摄氏度,这已经是危险温度了。所以好的降温设备是超频者必不可少的。

计算机工作原理 我想问一下二进制怎么就能进行运算呢? 01代表开和闭但...

0代表开,1代表闭。电脑只认识0和1程序设定

洞箫的开孔公式计算原理

第一音孔(与指孔通义,为严格计统称音孔。)的净长与本音波长(λ1)成小三度关系(300音分),如合并计算该音与筒音200音分的音程差,则该音孔的净长与筒音的波长λ。成纯四度关系(相差500音分)___即L1=3/4λ。;
第二音孔的净长也与本音波长λ2成小三度关系(300音分),如合并计算该音与筒音400音分的音程差,该音孔的净长与筒音波长λ。成纯五度关系(相差700音分)___即L2=2/3λ。;
第三音孔净长与本音波长λ3成八分之七大三度关系(340音分),会并计算该音与筒音500音分的差值,该音孔的净长与筒音的波长λ。差840音分___即L3=3/18λ。;
第四,第五,第六音孔(#4)的净长分别与本音波长(λ4,λ5,λ6)相差390音分,440音分,490音分(自三孔起,每孔递增50音分)。如合并计算到筒音波长λ。则分别相差1090音分,1340音分,1590音分;各音孔的净长则分别为筒音波长λ。的8/15(此为纯率,12平均率为9/17),6/13,2/5。
只要按λ。=v。/nf。公式计算出筒音的基音波长值___这个λ。然后分别乘以上列校正系数,则所有音孔的净长值(即所有开孔位置)都可以轻易而快捷地计算出来

图像分割——分水岭算法

姓名:谢意远

学号:19021110366T

嵌牛导读:图像中的目标物体是连接在一起的,则分割起来很困难,分水岭分割算法经常用于处理这类问题,通常会取得比较好的效果。

嵌牛鼻子:图像分割、分水岭算法

嵌牛提问:分水岭算法具体有哪些步骤?

嵌牛正文:

一、综述

分水岭分割算法把图像看成一幅“地形图”,其中亮度比较强的区域像素值较大,而比较暗的区域像素值较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。而直接应用分水岭分割算法的效果往往并不好,如果在图像中对前景对象和背景对象进行标注区别,再应用分水岭算法会取得较好的分割效果。基于标记控制的分水岭分割方法有以下基本步骤:

1  综述

分水岭分割算法把图像看成一幅“地形图”,其中亮度比较强的区域像素值较大,而比较暗的区域像素值较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。直接应用分水岭分割算法的效果往往并不好,如果在图像中对前景对象和背景对象进行标注区别,再应用分水岭算法会取得较好的分割效果。基于标记控制的分水岭分割方法有以下基本步骤:

1.计算分割函数。图像中较暗的区域是要分割的对象
2.计算前景标志。这些是每个对象内部连接的斑点像素。
3.计算背景标志。这些是不属于任何对象的要素。

4.修改分割函数,使其仅在前景和后景标记位置有极小值。

5.对修改后的分割函数做分水岭变换计算。

使用MATLAB图像处理工具箱

注:期间用到了很多图像处理工具箱的函数,例如fspecial、imfilter、watershed、label2rgb、imopen、imclose、imreconstruct、imcomplement、imregionalmax、bwareaopen、graythresh和imimposemin函数等。

2  步骤

 第一步:读入色图像,将其转化成灰度图像

clc; clear all; close all;

rgb = imread('pears.png');

if ndims(rgb) == 3

 I = rgb2gray(rgb);

else

 I = rgb;

end

figure('units', 'normalized', 'position', [0 0 1 1]);
第2步:将梯度幅值作为分割函数

使用Sobel边缘算子对图像进行水平和垂直方向的滤波,然后求取模值,sobel算子滤波后的图像在边界处会显示比较大的值,在没有边界处的值会很小。

hy = fspecial('sobel');

hx = hy';

Iy = imfilter(double(I), hy, 'replicate');

Ix = imfilter(double(I), hx, 'replicate');

gradmag = sqrt(Ix.^2 + Iy.^2);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 2, 1); imshow(I,[]), title('灰度图像')

subplot(1, 2, 2); imshow(gradmag,[]), title('梯度幅值图像')
可否直接对梯度幅值图像使用分水岭算法?

L = watershed(gradmag);

Lrgb = label2rgb(L);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 2, 1); imshow(gradmag,[]), title('梯度幅值图像')

subplot(1, 2, 2); imshow(Lrgb); title('梯度幅值做分水岭变换')
直接使用梯度模值图像进行分水岭算法得到的结果往往会存在过度分割的现象。因此通常需要分别对前景对象和背景对象进行标记,以获得更好的分割效果。

第3步:标记前景对象

有多种方法可以应用在这里来获得前景标记,这些标记必须是前景对象内部的连接斑点像素。这个例子中,将使用形态学技术“基于开的重建”和“基于闭的重建”来清理图像。这些操作将会在每个对象内部创建单位极大值,使得可以使用imregionalmax来定位。

开运算和闭运算:先腐蚀后膨胀称为开;先膨胀后腐蚀称为闭。开和闭这两种运算可以除去比结构元素小的特定图像细节,同时保证不产生全局几何失真。开运算可以把比结构元素小的突刺滤掉,切断细长搭接而起到分离作用;闭运算可以把比结构元素小的缺口或孔填充上,搭接短的间隔而起到连接作用。

开操作是腐蚀后膨胀,基于开的重建(基于重建的开操作)是腐蚀后进行形态学重建。下面比较这两种方式。首先,用imopen做开操作。

se = strel('disk', 20);

Io = imopen(I, se);
figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 2, 1); imshow(I, []); title('灰度图像');

subplot(1, 2, 2); imshow(Io), title('图像开操作')
接下来,通过腐蚀后重建来做基于开的重建计算。

Ie = imerode(I,se)

Iobr = imreconstruct(Ie,I);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 2, 1); imshow(I, []); title('灰度图像');

subplot(1, 2, 2); imshow(Iobr, []), title('基于开的重建图像')
开操作后,接着进行闭操作,可以移除较暗的斑点和枝干标记。对比常规的形态学闭操作和基于闭的重建操作。首先,使用imclose:

Ioc = imclose(Io, se);

Ic = inclose(I,se);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(2, 2, 1); imshow(I, []); title('灰度图像');

subplot(2, 2, 2); imshow(Io, []); title('开操作图像');

subplot(2, 2, 3); imshow(Ic, []); title('闭操作图像');

subplot(2, 2, 4); imshow(Ioc, []), title('开闭操作');
现在使用imdilate,然后使用imreconstruct。注意必须对输入图像求补,对imreconstruct输出图像求补。IM2 = imcomplement(IM)计算图像IM的补集。IM可以是二值图像,或者RGB图像。IM2与IM有着相同的数据类型和大小。

Iobrd = imdilate(Iobr, se);

Iobrcbr = imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));

Iobrcbr = imcomplement(Iobrcbr);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(2, 2, 1); imshow(I, []); title('灰度图像');

subplot(2, 2, 2); imshow(Ioc, []); title('开闭操作');

subplot(2, 2, 3); imshow(Iobr, []); title('基于开的重建图像');

subplot(2, 2, 4); imshow(Iobrcbr, []), title('基于闭的重建图像');
通过比较Iobrcbr和loc可以看到,在移除小污点同时不影响对象全局形状的应用下,基于重建的开闭操作要比标准的开闭重建更加有效。计算Iobrcbr的局部极大来得到更好的前景标记。
fgm = imregionalmax(Iobrcbr);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 3, 1); imshow(I, []); title('灰度图像');

subplot(1, 3, 2); imshow(Iobrcbr, []); title('基于重建的开闭操作');

subplot(1, 3, 3); imshow(fgm, []); title('局部极大图像');
为了帮助理解这个结果,叠加前景标记到原图上。

It1 = rgb(:, :, 1);

It2 = rgb(:, :, 2);

It3 = rgb(:, :, 3);

It1(fgm) = 255; It2(fgm) = 0; It3(fgm) = 0;

I2 = cat(3, It1, It2, It3);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(2, 2, 1); imshow(rgb, []); title('原图像');

subplot(2, 2, 2); imshow(Iobrcbr, []); title('基于重建的开闭操作');

subplot(2, 2, 3); imshow(fgm, []); title('局部极大图像');

subplot(2, 2, 4); imshow(I2); title('局部极大叠加到原图像');
注意到大多闭塞处和阴影对象没有被标记,这就意味着这些对象在结果中将不会得到合理的分割。而且,一些对象的前景标记会一直到对象的边缘。这就意味着应该清理标记斑点的边缘,然后收缩它们。可以通过闭操作和腐蚀操作来完成。

se2 = strel(ones(5,5));

fgm2 = imclose(fgm, se2);

fgm3 = imerode(fgm2, se2);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(2, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作');

subplot(2, 2, 2); imshow(fgm, []); title('局部极大图像');

subplot(2, 2, 3); imshow(fgm2, []); title('闭操作');

subplot(2, 2, 4); imshow(fgm3, []); title('腐蚀操作');
这个过程将会留下一些偏离的孤立像素,应该移除它们。可以使用bwareaopen,用来移除少于特定像素个数的斑点。BW2 = bwareaopen(BW,P)从二值图像中移除所以少于P像素值的连通块,得到另外的二值图像BW2。

fgm4 = bwareaopen(fgm3, 20);

It1 = rgb(:, :, 1);

It2 = rgb(:, :, 2);

It3 = rgb(:, :, 3);

It1(fgm4) = 255; It2(fgm4) = 0; It3(fgm4) = 0;

I3 = cat(3, It1, It2, It3);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(2, 2, 1); imshow(I2, []); title('局部极大叠加到原图像');

subplot(2, 2, 2); imshow(fgm3, []); title('闭腐蚀操作');

subplot(2, 2, 3); imshow(fgm4, []); title('去除小斑点操作');

subplot(2, 2, 4); imshow(I3, []); title('修改局部极大叠加到原图像');
第4步:计算背景标记

现在,需要标记背景。在清理后的图像Iobrcbr中,暗像素属于背景,所以可以从阈值操作开始。

bw =im2bw(Iobrcbr, graythresh(Iobrcbr));

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作');

subplot(1, 2, 2); imshow(bw, []); title('阈值分割');
背景像素在黑色区域,但是理想情形下,不必要求背景标记太接近于要分割的对象边缘。通过计算“骨架影响范围”来“细化”背景,或者SKIZ,bw的前景。这个可以通过计算bw的距离变换的分水岭变换来实现,然后寻找结果的分水岭脊线(DL==0)。D = bwdist(BW)计算二值图像BW的欧几里得矩阵。对BW的每一个像素,距离变换指定像素和最近的BW非零像素的距离。bwdist默认使用欧几里得距离公式。BW可以由任意维数,D与BW有同样的大小。

D = bwdist(bw);

DL = watershed(D);

bgm = DL == 0;

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(2, 2, 1); imshow(Iobrcbr, []); title('基于重建的开闭操作');

subplot(2, 2, 2); imshow(bw, []); title('阈值分割');

subplot(2, 2, 3); imshow(label2rgb(DL), []); title('分水岭变换示意图');

subplot(2, 2, 4); imshow(bgm, []); title('分水岭变换脊线图');
第5步:计算分割函数的分水岭变换

函数imimposemin可以用来修改图像,使其只是在特定的要求位置有局部极小。这里可以使用imimposemin来修改梯度幅值图像,使其只在前景和后景标记像素有局部极小。
gradmag2 = imimposemin(gradmag, bgm | fgm4);

figure('units', 'normalized', 'position', [0 0 1 1]);
subplot(2,2,1)imshow(bgm,[]);title('分水岭变换脊线图');

subplot(2, 2, 2); imshow(fgm4, []); title('前景标记');

subplot(2, 2, 3); imshow(gradmag, []); title('梯度幅值图像');

subplot(2, 2, 4); imshow(gradmag2, []); title('修改梯度幅值图像');
最后,可以做基于分水岭的图像分割计算。

第6步:查看结果

一个可视化技术是叠加前景标记、背景标记、分割对象边界到初始图像。可以使用膨胀来实现某些要求,比如对象边界,更加清晰可见。对象边界定位于L==0的位置。

It1 = rgb(:, :, 1);

It2 = rgb(:, :, 2);

It3 = rgb(:, :, 3);

fgm5 = imdilate(L == 0, ones(3, 3)) | bgm | fgm4;

It1(fgm5) = 255; It2(fgm5) = 0; It3(fgm5) = 0;

I4 = cat(3, It1, It2, It3);

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 2, 1); imshow(rgb, []); title('原图像');

subplot(1, 2, 2); imshow(I4, []); title('标记和对象边缘叠加到原图像');
可视化说明了前景和后景标记如何影响结果。在几个位置,部分的较暗对象与它们相邻的较亮的邻接对象相融合,这是因为受遮挡的对象没有前景标记。

另外一个有用的可视化技术是将标记矩阵作为色图像进行显示。标记矩阵,比如通过watershed和bwlabel得到的,可以使用label2rgb转换到真图像来显示。

Lrgb = label2rgb(L,'jet', 'w', 'shuffle');

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 2, 1); imshow(rgb, []); title('原图像');

subplot(1, 2, 2); imshow(Lrgb); title('色分水岭标记矩阵');
可以使用透明度来叠加这个伪色标记矩阵在原亮度图像上进行显示。

figure('units', 'normalized', 'position', [0 0 1 1]);

subplot(1, 2, 1); imshow(rgb, []); title('原图像');

subplot(1, 2, 2); imshow(rgb, []); hold on;

himage = imshow(Lrgb);

set(himage, 'AlphaData', 0.3);

title('标记矩阵叠加到原图像');

灰度形态学基本运算

与 二值形态学 相对应另一种形态学运算是灰度形态学。灰度形态学与二值形态学相比,不仅在图像本身的空间尺寸上有一个变化,而且图像本身的灰度值也会发上变化。

灰度形态学膨胀,在数学上的定义,可以用如下公式表示:

其中, 表示原始图像,而 表示对原始图像进行膨胀运算的结构化要素,为了与二值化膨胀的运算符号加以区别,我们用 表示灰度形态学膨胀运算。

根据公式,对灰度形态学可以简单理解为,对于原始图像F中 坐标的灰度值,分别向右移动 个单位,再加结构化元素 的值,再取其求得的最大值。

为了更加直观地了解灰度膨胀的运算过程,假设有一个一维的灰度分布列表和一个一维的结构化要素,其膨胀运算的过程可以如下图所示:

如上图所示,以 作为原点坐标,根据结构化元素的分布,先将原始图像 向左移动一个单位,每个灰度值再减3,记作 ,空位用 * 代替,再将原始图像向右移动一个单位,同样每个灰度值减去3,记作 ,余位用 * 补齐,最后,每一列再求取最大值,得到最后的结果,即是对原始图像 以结构化要素 进行灰度膨胀后的结果。可以看出,原始图像不仅在灰度值上发生了变化,而且空间尺寸变得更大。

灰度膨胀的另一个例子如下图所示,

一些灰度膨胀运算的结果如下图所示:

观察以上灰度膨胀效果图,可以看出灰度膨胀具有如下效果:

灰度腐蚀的运算,在数学上的定义,如下公式所示:
与灰度膨胀类似,灰度腐蚀的运算可以描述为将原始图像的像素点移动 个单位,再减去结构化元素 在坐标 处的值,求取集合中的最小值。灰度腐蚀的显著效果是不仅可以使得图像的尺寸变小,其灰度值也会变小。可以将灰度腐蚀的过程想象成一个雪人受到阳光照射而逐渐溶化的过程。

同样,为了更加深刻地理解灰度腐蚀的基本原理,与灰度膨胀一样,以一个简单的一维数据为例,介绍灰度腐蚀的计算过程,如下图所示:
更多的示例如下所示:

灰度腐蚀的效果图如下所示:

灰度腐蚀的效果,与灰度膨胀来对比,呈现出相反的特征,具体特征如下:

灰度形态学的腐蚀运算跟二值形态学的开运算一样,也是利用结构化元素,先对原始灰度图像进行腐蚀后,再进行膨胀的运算,用数学公式表述这个过程如下所示:
灰度开运算能够保留灰度图像中特定的强度的同时,削弱图像中的某种强度,如下图所示,用一个一维数据为例,将灰度开运算的过程当作一个用结构化元素从下往上 fit 原始数据的过程,图像中的一些 尖峰 无法 fit ,将会被抹去,从而得到削弱图像强度的效果。

灰度开运算的过程,如下图所示,可以看出,对原始图像进行灰度开运算后,原始图像的尺寸并没有发生改变,只是一些灰度值变小了。

如下图所示,是一个灰度开运算效果的具体实例,如红框所标的部分,通过灰度开运算,灰度图像中一些被暗色(黑)包围的较小的亮色(白)通过开运算杯抹去,而蓝框表示出的一些较大的亮色区域却被保留了下来。

如下图所示,是灰度开运算的另一个例子,可以看出,结构化元素的尺寸越大,灰度图像中被抹去的亮色区域也越大。

综合以上两个实例,可以看出,灰度开运算具有如下特点:

灰度闭运算的数学公式表述如下:
从数学公式的形式上,可以看出来,灰度闭运算与二值闭运算的计算过程非常相似,其基本的形态学运算灰度膨胀和腐蚀运算。与二值闭运算相比,灰度闭运算不改变图像本身的大小,而是会改变图像的灰度值。

为了更加形象的说明灰度闭运算的原理,以一个一维数据为例,如下图所示,可以将灰度闭运算看作是利用结构化元素对一副图像个上往下 fit 的过程, fit 的过程中,会进入一些“死区”(尺寸小于结化元素的区域),则“死区”数据会被填埋。

以数学计算的方式理解,灰度闭运算,其计算过程如下图所示:

可以看到灰度闭运算,并不会改变图像本身的尺寸,而是会对增加图像的像素值,也就是,灰度闭运算会使得图像变得更亮。

观察以下图片,可以看出灰度闭运算的效果,使得图片中被红色边框所标示的尺寸较小的亮色区域(像素值较大)的部分尺寸增加,而蓝色方框标示出的较大的亮色区域并未发生改变。

观察以下图片,可以看出,当灰度闭运算的结构化元素尺寸越大,所造成,原始灰度图像中被填埋的区域面积也越大。

通过以上分析,灰度闭运算具有如下效果:

最后,以一条曲线为例,比较四种灰度形态学算法的异同

展开全文