图像处理测算面积
PS中是怎么计算面积的呢
PS中是怎么计算面积的呢
认识直方图及在PS中用像素法计算面积
一、PS中是怎么计算面积的呢?
先来计算一个矩形的面积,在图像上做一个矩形的选区
在信息调板中就可以看到相应的数据
在上面的数据中我们可以看到以英寸为单位,这个矩行的面积是1.972×1.194=2.354568 平方英寸
到了这一步,我估计有很多西红柿和臭鸡蛋会向我砸过来,别急,我做这个矩形选区的面积只是为了给大家验证一下我的方法是否准确。
接来来打开直方图调板,很少人去看直方图的“统计数据”,我想习惯去看直方图的人都很少吧。
在直方图中有一组数据:其中有一个“像素:12212”的数据,这表示这个选区中有12212个像素。本例中,文档大小1.972×1.194=2.354568 平方英寸,分辨率为72.
我们知道:图像的最小单位是像素。图像的分辨率是“像素/英寸”或“像素/厘米”。
新建-文件-宽、高均为1英寸,分辨率为72。图像-图像大小-这时像素为72*72=5184个像素。
也就是说在1英寸的长度的位置包含72个像素,那么1平方英寸(1英寸=2.54厘米,即2.54*2.54=6.4516平方厘米)的面积里就会有72×72=5184个像素。
了解了这些知识,那么我们就可以将选区内的12212个像素有多少面积做出计算了:这个选区的全部像素除以1个平方寸包含的像素5184,就是这个选区里的像素大小能折合成多少个平方英寸了。即12212÷5184(72的平方)=2.3557098平方英寸(15.1935平方厘米)。和信息调板里的长乘以宽所得到的面积是相等的。我们知道,1英寸=2.54厘米,换算成厘米就是,2.3557098*2.54*2.54=15.19平方厘米
ImageJ实用技巧——面积测量综述
ImageJ实用技巧——面积测量综述
面积测量,是ImageJ中最常用的功能之一,之前的教程中没有对这一功能进行过多的说明。
而越来越多的同学在使用ImageJ测量面积时,出现了各式各样的问题。
这一篇稳重会对怎样利用ImageJ进行面积测量作更的全面叙述,包括手动、半自动和自动框选等类型,旨在让大家对面积测量有更深入的理解,掌握更多面积检测的方法,同时根据所举出的例子,找到适合自己的测量方法。
面积测量的Workflow很简单,只需要两步:
1、选出感兴趣的区域(ROI)——即图像分割
2、Measure
面积测量的本质其实就是图像的分割,图像分割的好坏直接决定了结果的好坏。
区域的框选又可以分为三种类型:
1、自动框选(Threshold、Analyze Particles、Color Threshold)
2、半自动框选(魔法棒工具、Trainable Weka Segmentation)
3、手动框选(矩形、圆形、Free hand工具等)
下面会对这三种类型逐一说明并举例:
第一步:告诉ImageJ你要测面积这一参数(Analyze -> Set Measurements)
在Set Measurements界面勾选Area。
情景一:自动框选(Threshold、Analyze Particles、Color Threshold)
1、整体面积(Image -> Adjust -> Threshold)
图像转为8-bit后,通过调整阈值,框选出细胞,然后Measure 得到整体的面积。要求所选区域的灰度值,与周围区域有明显的差别。
opencvsharp颜色分割计算面积
opencvsharp颜色分割计算面积OpenCvSharp是一个基于OpenCV的开源计算机视觉库,它提供了一系列的图像处理和计算机视觉算法。在图像处理中,颜色分割是一种常见的技术,它可以将图像中的不同颜色区域分割开来,并计算这些区域的面积。
颜色分割是一种基于颜色信息的图像分割方法。在图像中,不同的颜色代表着不同的物体或者物体的不同部分。通过提取图像中特定颜色的像素,我们可以将图像分割成不同的区域。颜色分割在许多应用中都有广泛的应用,比如目标检测、图像分析等。
在OpenCvSharp中,颜色分割可以通过以下步骤实现:
1. 加载图像:首先,我们需要加载需要进行颜色分割的图像。可以使用OpenCvSharp提供的函数来读取图像文件,并将其转换为OpenCvSharp中的数据结构。
2. 转换颜色空间:在进行颜色分割之前,我们通常需要将图像从RGB颜色空间转换为其他颜色空间。常用的颜色空间包括HSV、Lab等。在OpenCvSharp中,可以使用cv::cvtColor函数来实现颜色空间的转换。
3. 阈值分割:一旦将图像转换到目标颜色空间,我们可以根据不同颜色的像素值进行阈值分割。阈值分割将图像中的像素分成两个部
分:一个部分是满足特定条件的像素,另一个部分是不满足条件的像素。在OpenCvSharp中,可以使用cv::threshold函数来实现阈值分割。
4. 连通域分析:阈值分割之后,我们可以通过连通域分析来识别不同的区域。连通域分析可以将图像中相邻的像素组合成一个区域,并为每个区域分配一个标签。在OpenCvSharp中,可以使用cv::connectedComponents函数来实现连通域分析。
opencv掩膜面积计算
opencv掩膜面积计算
OpenCV掩膜面积计算是一种基于图像处理的技术,可以用于测量图像中特定区域的面积。这种技术可以应用于许多领域,例如医学、地理信息系统、农业等。
在OpenCV中,掩膜是一个二进制图像,其中1表示需要计算面积的区域,0表示不需要计算的区域。我们可以使用OpenCV的函数“cv::countNonZero()”来计算掩膜中非零像素的数量,也就是需要计算的像素数量。通过这个像素数量和像素的大小,我们可以计算出掩膜中需要计算的区域的面积。
下面是一个简单的例子,展示如何使用OpenCV计算掩膜面积。
首先,我们需要加载一张图像和一个掩膜。下面是一个示例代码: ```
cv::Mat image = cv::imread('image.jpg');
cv::Mat mask = cv::imread('mask.jpg',
cv::IMREAD_GRAYSCALE);
```
接下来,我们可以使用“cv::countNonZero()”函数计算掩膜中非零像素的数量:
```
int nonZeroPixels = cv::countNonZero(mask);
```
最后,我们可以计算掩膜中需要计算的区域的面积:
```
double area = nonZeroPixels * pixelSize;
```
其中,pixelSize是像素的大小。如果图像的宽度和高度是以厘米为单位的,那么像素的大小可以通过以下公式计算:
```
pixelSize = (imageWidthInCm / imageWidthInPixels) * (imageHeightInCm / imageHeightInPixels)
测算叶子的面积的实验报告
实验报告:测算叶子的面积
背景
叶子是植物进行光合作用的主要器官之一,其面积大小直接影响光合作用的效率。因此,测算叶子的面积对于研究植物生长和光合作用具有重要意义。传统的测算叶子面积的方法包括直接测量和间接测量,但这些方法都存在一些局限性,例如测量精度不高或操作复杂。
本实验旨在探索一种简便且精确的方法来测算叶子的面积,以提高测量效率和准确性。
分析
设备和材料
•数字相机
•计算机
•图像处理软件(如ImageJ)
实验步骤
1.选择一片待测叶子,并将其放置在一个平整的背景上,例如白纸。
2.使用数字相机拍摄叶子的照片,确保照片清晰且叶子占据整个图像。
3.将照片导入计算机,并使用图像处理软件打开。
4.在软件中使用选择工具(如矩形选择工具或多边形选择工具)选择叶子的轮
廓。
5.使用软件中的测量工具测量所选叶子的面积。
数据处理
1.将测量得到的叶子面积记录下来,并计算平均值和标准偏差。
2.根据所使用的图像处理软件的特性和测量精度,评估测量的准确性。
结果
根据我们的实验结果,利用图像处理软件测算叶子面积的方法在测量精度和操作简便性方面都表现出色。我们对10片不同大小的叶子进行了测量,并得到以下结果:
叶子编号面积(平方厘米)
1 4.32
2 3.78
3 5.01
4 4.90
叶子编号面积(平方厘米)
5 3.95
6 4.58
7 4.02
8 4.25
9 3.87
10 4.15
根据上述数据,我们计算得到平均叶子面积为4.28平方厘米,标准偏差为0.42平方厘米。
建议
根据我们的实验结果,我们认为利用图像处理软件测算叶子面积是一种简便且精确的方法。然而,我们也注意到该方法的准确性受到所使用的图像处理软件的影响。因此,我们建议在选择图像处理软件时要注意其测量功能的准确性和稳定性。
基于MATLAB的图像处理方法进行面积计算
% Edit By :DTL
%
%
%%图片颜色均衡
x_min=58;x_max=1439;
y_min=1;y_max=853;
valid_pix_cnt=0;%浅色区域像素点个数计数
%原始图像
I=imread('ini_p2.png');
figure(1)
imshow(I);
sum_pix=(x_max-x_min+1)*(y_max-y_min+1);
mean_R=sum(sum(I(y_min:y_max,x_min:x_max,1)))/sum_pix;
mean_G=sum(sum(I(y_min:y_max,x_min:x_max,2)))/sum_pix;
mean_B=sum(sum(I(y_min:y_max,x_min:x_max,3)))/sum_pix;
I(249:370,423:595,1)=mean_R-5;
I(249:370,423:595,2)=mean_G-5;
I(249:370,423:595,3)=mean_B-5;
%%
%分块均衡
Lx=150;Ly=100;
blk_pix=Lx*Ly;
x_inc=15;
y_inc=9;
x_cnt=floor((x_max-x_min-Lx+1)/x_inc)+1;
y_cnt=floor((y_max-y_min-Ly+1)/y_inc)+1;
I_blc=I;
%均衡处理
for x_blc=0:x_cnt
for y_blc=0:y_cnt
x_start=x_min+x_blc*x_inc;
x_end=x_min+x_blc*x_inc+Lx-1;
图像处理测算面积
图像处理课程设计报告设计题目图像处理技术应用实践学校南京信息工程大学
专业计算机科学与技术
学号 20121308105
班级 3
姓名唐盼
一、图像的采集、读取及显示
1.采集树叶一片,在纸上画上参照物,与树叶一起拍下,得到树叶的原始彩色图片。
2.将图片传到MATLAB开发平台上,读取图片。
3.将彩色图转换为灰度图。
二、图像处理
要求需要用到中值滤波,调节图像对比度,边缘检测sobel 算子,填充,标记。
1.现对图像进行中值滤波区噪声。
2.调节对比度,这个参数还是很重要的,决定着后面的操作能不能顺利进行。
3.进行边缘检测
4.形态性里面的膨胀方法让图像的线条加粗。
5.对检测出来的边缘进行填充。
6.平滑,不断的平滑,知道上面的噪声全部删除,这个步骤需要自己不断的尝试。
四、实验结果及误差分析
我们事先将左边的小方块测量出来了面积是九,此时我们只要得到小方块所占的像素多少以及树叶的像素多少一比,再乘以九即可得到树叶的面积。
通过划分小正方形的方法,我们测的树叶的大小是11.25。五、结论
用这个方法测出来的树叶大小精度还算可以,主要的误差集中在,树叶有阴影部分,然后树叶也不是很平整,还有我们自己的画参照物可能也不够精确。
六、附程序清单
Untitled5.m文件
clc;
clear;
S_model=9;
A=imread('C:\Users\evol123\Desktop\1234.jpg'); %¶ÁÈë600*400µÄͼÏñ
B=rgb2gray(A); %ת»¯Îª»Ò¶Èͼ
C=myfilterM(B,3); %ÀûÓÃ×ÔÖÆÖÐÖµÂ˲¨¸øͼÏñÈ¥Ôë
opencvsharp颜色分割计算面积
opencvsharp颜色分割计算面积
摘要:
一、OpenCvSharp简介
- 什么是OpenCvSharp
- 为什么使用OpenCvSharp
二、颜色分割
- 颜色分割的概念
- 颜色分割的方法
三、计算面积
- 计算面积的概念
- 计算面积的方法
四、实际应用
- 应用场景
- 具体实现
正文:
【一、OpenCvSharp简介】
OpenCvSharp是一个开源的计算机视觉库,它提供了大量的图像处理、视频分析和计算机视觉方面的功能。它可以在多个平台上运行,包括Windows、Linux和macOS等。使用OpenCvSharp,我们可以轻松地实现诸如图像分割、目标检测、目标跟踪等功能。
【二、颜色分割】
颜色分割是图像处理中的一种技术,它通过设置一定的颜色阈值,将图像中的不同区域分割成不同的颜色。颜色分割可以用于提取图像中的特定目标,例如在图像中分割出红色的人脸。
颜色分割的方法主要有以下几种:
1.基于像素的颜色分割:根据每个像素的颜色值来判断它属于哪个区域。
2.基于区域的颜色分割:将图像分割成若干个区域,然后根据区域的颜色特征进行分割。
3.基于边缘的颜色分割:通过检测图像的边缘来分割不同的区域。
【三、计算面积】
计算面积是计算机视觉中的一个基本操作,它可以用于测量图像中特定区域的面积。计算面积的方法主要有以下几种:
1.基于像素的面积计算:通过计算目标区域内的像素数量来得到面积。
2.基于区域的面积计算:将目标区域与图像中的其他区域进行比较,从而得到目标区域的面积。
3.基于边缘的面积计算:通过计算目标区域的边缘长度来得到面积。
opencv 矩形面积
opencv 矩形面积
如何使用OpenCV计算矩形的面积
在计算机视觉领域中,使用OpenCV是一个非常常见的选择。OpenCV 是一个用于图像处理和计算机视觉任务的强大库,它提供了众多的功能和算法。其中一个常见的任务是计算矩形的面积。在本文中,我将逐步介绍如何使用OpenCV计算矩形的面积。
第一步:安装OpenCV
要开始使用OpenCV进行矩形面积的计算,首先需要安装OpenCV库。可以在OpenCV官方网站上找到安装指南,并按照指南一步一步进行安装。一旦安装完成,就可以继续第二步。
第二步:导入必要的库
在使用OpenCV进行矩形面积计算之前,我们需要导入必要的库。以下是导入的代码示例:
python
import cv2
import numpy as np
在这个代码片段中,我们导入了两个最常用的库:cv2和numpy。cv2是OpenCV的Python接口,而numpy是一个用于科学计算的Python库。
第三步:创建一个矩形
要计算矩形的面积,首先需要创建一个矩形。在OpenCV中,矩形由其左上角和右下角的坐标定义。以下是创建矩形的代码示例:
python
# 创建矩形
rectangle = np.array([[100, 100], [300, 200]])
在这个代码片段中,我们使用了numpy库中的array函数来创建一个2x2的数组,表示矩形的左上角和右下角坐标。这个矩形的左上角坐标是(100, 100),右下角坐标是(300, 200)。
第四步:计算矩形的面积
一旦创建了矩形,就可以开始计算其面积。在OpenCV中,可以使用
halcon求的面积单位
halcon求的面积单位
在HALCON中,求得的面积单位可能因具体的操作和使用场景而有所不同。
例如,在图像处理中,图像分辨率与面积相关时是指每英寸图像内的像素点数,单位为ppi(像素每英寸)。在这种情况下,面积是由像素的数量决定的,而不是具体的测量单位。
此外,在某些情况下,面积也可以以毫米^2(mm^2)等单位来表示。例如,在对齐后测量圆形的公制结果时,单位为毫米,面积单位为毫米^2。
如果你想了解HALCON中特定操作或函数所返回的面积单位,建议查阅相关的HALCON 文档或参考手册,以获取更准确的信息。
面积计算步骤
如何利用ImageJ计算面积
1.首先需确认图片类型为“8-bit”,方法:“image---type---8-bit”;
2.设定标尺:选择直线工具(主工具栏straight line),对照拍照时的标
尺画出一根同样长度的线。如果需要精确,可以在按straight line 后,按键盘上的“箭头”增大图像进行标示。打开主菜单的analyze–>set scale,在打开的窗口中设置known distance为标尺长度,在unit of length输入单位,如nm(默认是cm),点上“global”,按“确定”。在下面可以看到具体的像素单位比例。
3.若目标颗粒与背景衬度差明显,可通过“process---binary---make
binary”设置阈值(threshold),以区分目标物和背景;若目标物与背景差别不大,或背景复杂,可通过freehand selections手动描绘出目标物区域范围,具体看第4项;
4.利用“freehand selections”确定目标物边界:
5.分析并输出结果:analyze---analyze particles,在show中选取
outlines,并点选display result和exclude on edges,或可根据需要选择不同选项;最后点击ok,即可得到结果。键盘上的“m”可作为快捷键,一按即可弹出results。
6.设置输出选项:在analyze---analyze measurements中设置输出选项,
比如周长、面积、灰度值等自己想要的结果。
数字图像处理技术在叶面积测量中的应用
数字图像处理技术在叶面积测量中的应用作者:***
来源:《农学学报》2022年第02期
摘要:传统测量叶面积方法费时、低效,叶面积仪法高成本、维修不便。本研究利用图像处理技术测量叶面积,从解决图像阈值的分割、叶片阴影去除以及叶片边缘检测算法等问题出发,应用大津法求得阈值,中值滤波法去除杂点,采用Roberts算子检测边缘,进而计算叶面积。叶面积仪法与图像处理法比较叶面积值相关系数R2为0.962,剪纸法与图像处理法比较叶面积值相关系数R2为0.949,最后验证本方法适合大量叶面积的测量工作,且具有速度快、数据准确、精度高的特点。
关键词:图像处理;阈值;算法;像素;叶片
中图分类号:S24文献标志码:A论文编号:cjas2020-0218
Leaf Area Measurement System Based on Digital Image Processing Technology
SONG Yingbo
(Jiamusi Branch of Heilongjiang Academy of Agricultural Sciences, Jiamusi 154007,Heilongjiang, China)
Abstract: In view of the time consuming and low efficiency of the traditional method of leaf area measurement, and the high cost and inconvenient maintenance of the leaf area meter method,this study used the image processing technology to measure the leaf area. The computer vision technology reference method was used to solve the limitations of image threshold segmentation, leaf shadow removal and leaf edge detection algorithm, and the threshold was obtained by OTSU method, the median filtering method was used to remove residual impurities in the image, and the Roberts operator was used for edge extraction. Leaf areas are calculated and compared with those obtained by leaf area meter and paper-cutting method. The leaf area determined by the leaf area meter method and the image processing method had the correlation coefficient R2of 0.962, and the leaf area determined by the paper cutting method and the image processing method had the correlation coefficient R2of 0.949. The digital image processing method is validated to be suitable for large amount of leaf area measurement, and has fast speed, accurate data and high precision.
图像处理——周长、面积计算(Matlab)
题目:面积与周长的计算
检测下图细胞数量,并计算面积与周长的比。
处理过程
首先将图像变换为灰度图像,并取其边缘二值图像。
然后分别对边缘二值掩膜进行膨胀、填充空洞、清除边缘。
最后对处理后的二值图像的连通区域进行检测,求其连通区域个数、周长和面积,并以此求出面积与周长的比。
处理结果
最后得到细胞数量a=88,面积m=24333,周长z=4956.4,面积与周长的比b=4.9094。
程序清单
clc;clear all
I=imread('7.bmp');
figure;imshow(I);
I2=rgb2gray(I);
[junk, threshold] = edge(I2,'sobel');
fudgeFactor=.5;
BWs=edge(I2,'sobel',threshold*fudgeFactor);
figure;
subplot(221),imshow(BWs),title('边缘梯度二值掩膜');
se90=strel('line',3,90);
se0=strel('line',3,0);
BWsdil=imdilate(BWs,[se90 se0]);
subplot(222);imshow(BWsdil),title('膨胀梯度掩膜');
BWdfill=imfill(BWsdil,'holes');
subplot(223);imshow(BWdfill);title('填充空洞后的二值图像');
BWnobord=imclearborder(BWdfill,4);
subplot(224);imshow(BWnobord),title('清除边缘的二值图像');
imagej计算面积的原理
imagej计算面积的原理
ImageJ计算面积的原理
介绍
ImageJ是一种功能强大的图像处理软件,广泛用于生物医学研究中。其中一个常见的应用是计算图像中物体的面积。本文将从浅入深地解释ImageJ计算面积的原理。
像素和分辨率
在了解ImageJ计算面积的原理之前,首先需要了解两个重要的概念:像素和分辨率。
•像素是图像的最小单位,可以看作是一个小方块,包含有图像的所有信息。
•分辨率表示图像中的像素数量,通常用水平方向上的像素数和垂直方向上的像素数来表示。
二值化
计算图像面积的第一步是将彩色图像转换为二值图像。由于彩色图像包含了丰富的信息,计算量较大,而灰度图像也需要进行阈值处理。因此,通常将彩色或灰度图像转换为二值图像,只保留物体的轮廓。
阈值处理
阈值处理是将灰度图像转换为二值图像的方法。通过设定一个阈值,像素值高于该阈值的像素被设置为白色,而低于该阈值的像素被
设置为黑色。常用的阈值处理方法有全局阈值和局部阈值。
•全局阈值将整个图像分为前景和背景,根据前景像素和背景像素的灰度特性进行二值化。
•局部阈值将图像分为许多小块,在每个小块内选择一个合适的阈值进行二值化。
二值图像的面积计算
在得到二值图像之后,我们可以通过数学计算来得到物体的面积。
由于二值图像中的每个像素都代表一个物体的一部分,因此我们
可以计算图像中每个像素的个数,然后乘以每个像素代表的实际面积,得到物体的总面积。这个实际面积可以根据图像的分辨率和像素大小
计算得到。
结论
通过ImageJ软件,我们可以方便地计算图像中物体的面积。首先将彩色或灰度图像转换为二值图像,然后通过阈值处理将物体的轮廓
用PS计算图片中不规则图形的面积的方法
标 在 直 方 图 中 拉 选 出 色
.
,
色 选 项
明 度 也 可
用 鼠
而 后 在 直 方 图 中 调 出 颜
PPT
接 上 张
说 的 图 片 解
.
寸
打 印 出 图 片 后 的 实 际 尺
.
的
标 尺 标 注 的 只 是 你
,
方 的 标 尺
不 一 定 准 确
,
.
例
特 别 注 意
不 要 看 上
,
出 图 片 的 长 宽
而 后
,
随 后 回 到 图 片
点 击 右
.
分 比
下 黑 色 部 分 占 图 片 的 百
下 面 百 分 位 的 值 即 是 余
0~0,
,
拉 选 选 出 色 阶
这 时
.
百 分 比
在 直 方 图 左 侧
片 在 整 张 图 片 中 所 占 的
百 分 位 的 值 即 是 白 色 叶
255~255,
阶
这 时 下 面 的
,
如 果 遇 到 图 中 情 况
可
", .
".
, "
"
添 加 到 选 区
点 击 各 个 部 分 也 要 先 点
连 续 选 择 了
上 一 页 中
matlab求面积像素数量法
在Matlab中,可以使用以下步骤来计算图像中不规则图形的面积(以像素为单位):
1.读取图像。
2.根据各色块的RGB值确定像素计算的阈值。该过程可通过Matlab指令获
取图像各点的RGB。
3.根据每个色块的RGB,在MATLAB中可使用for循环对符合条件的像素
点进行查找并计数。
4.计算每个色块所占图片的百分比,然后乘以图片像素总数,即为该色块的
像素数量。
5.将不规则图形所占的像素数量相加,即为不规则图形的面积。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像处理课程设计报告设计题目图像处理技术应用实践学校南京信息工程大学
专业计算机科学与技术
学号 20121308105
班级 3
姓名唐盼
一、图像的采集、读取及显示
1.采集树叶一片,在纸上画上参照物,与树叶一起拍下,得到树叶的原始彩色图片。
2.将图片传到MATLAB开发平台上,读取图片。
3.将彩色图转换为灰度图。
二、图像处理
要求需要用到中值滤波,调节图像对比度,边缘检测sobel 算子,填充,标记。
1.现对图像进行中值滤波区噪声。
2.调节对比度,这个参数还是很重要的,决定着后面的操作能不能顺利进行。
3.进行边缘检测
4.形态性里面的膨胀方法让图像的线条加粗。
5.对检测出来的边缘进行填充。
6.平滑,不断的平滑,知道上面的噪声全部删除,这个步骤需要自己
不断的尝试。
四、实验结果及误差分析
我们事先将左边的小方块测量出来了面积是九,此时我们只要得到小方块所占的像素多少以及树叶的像素多少一比,再乘以九即可得到树叶的面积。
通过划分小正方形的方法,我们测的树叶的大小是11.25。五、结论
用这个方法测出来的树叶大小精度还算可以,主要的误差集中在,树叶有阴影部分,然后树叶也不是很平整,还有我们自己的画参照物可能也不够精确。
六、附程序清单
Untitled5.m文件
clc;
clear;
S_model=9;
A=imread('C:\Users\evol123\Desktop\1234.jpg'); %¶ÁÈë600*400µÄͼÏñ
B=rgb2gray(A); %ת»¯Îª»Ò¶Èͼ
C=myfilterM(B,3); %ÀûÓÃ×ÔÖÆÖÐÖµÂ˲¨¸øͼÏñÈ¥Ôë
D=imadjust(C,[0.35 1]); %µ÷½ÚͼÏñ¶Ô±È¶È
E=edge(D,'sobel'); %±ßÔµ¼ì²â
a=strel('line',3,90); %Ìϸ·ì
b=strel('line',3,0);
F=imdilate(E,[a b]);
G=imfill(F,'holes'); %Ìî³ä
SeD=strel('diamond',1); %ƽ»¬Ö±µ½Ê÷Ò¶±úÏûʧ
H=imerode(G,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
H=imerode(H,SeD);
L=bwlabel(H,8); %񈬀
s=regionprops(H,'Area','Centroid');
% s.Area
l=ismember(H,find([s.Area]>=1000));
number=size(s,1);
statistics=[s.Area];
centroid=cat(1,s.Centroid);
area(2)=S_model;
for i=1:number
area(i)=statistics(i)/statistics(2)*area(2);
end
subplot(241),imshow(A);
subplot(242),imshow(B);
subplot(243),imshow(C);
subplot(244),imshow(D);
subplot(245),imshow(E);
subplot(246),imshow(F);
subplot(247),imshow(G);
subplot(248),imshow(H);
figure,imshow(l);
for i=1:number;
text(centroid(i,1),centroid(i,2),num2str(area(i)));
end
myfilterM.m文件
function [new_X] = myfilterM(X,mod_size)
new_X=X;
S=size(X);
%°´ÐбéÀú
for i=1+(mod_size-1)/2:S(1)-(mod_size-1)/2
%½«µÚiÐеĵÄÆäËû¿éÒÀ´Î½øÐÐÔËËã
for j=1+(mod_size-1)/2:S(2)-(mod_size-1)/2
if new_X(i,j)==0||new_X(i,j)==255
temp=X(i-(mod_size-1)/2:i+(mod_size-1)/2,j-(mod_size-1)/2:j+(mod_size -1)/2);
%ÇóÖÐÖµ
new_X(i,j)=median(temp(:)) ;
end
end
end
%new_X1=new_X(1+(mod_size-1)/2:S(1)-(mod_size-1)/2,1+(mod_size-1)/2:S (2)-(mod_size-1)/2);