用python计算菌斑面积

研究生课题需要所以写了一个:

import numpy as np
from PIL import Image
import skimage.io

#把图片二值化
def binaryzation(pic_id, new_id):
    img = Image.open(pic_id)
    img = img.convert("L")

    imgs = skimage.io.imread(pic_id)
    ttt = 1.4 * np.mean(imgs)

    WHITE, BLACK = 255, 0

    img = img.point(lambda x: WHITE if x > ttt else BLACK)
    img = img.convert(‘1‘)
    img.save(new_id)
#计算菌斑面积占比
def zone_cal(new_id):
    imgs = skimage.io.imread(new_id)
    a = imgs.tolist()
    b = w = 0
    for j in a:
        for l in j:
            if l <= 125:
                b += 1
            else:
                w += 1
    fungi_percent = w / (w + b)
    return fungi_percent
    #print(fungi_percent, w, b)
before = after = 0
for x in range(1, 4):
    binaryzation(‘d:/p/hx-‘+str(x)+‘.jpg‘, ‘d:/p/hx-‘+str(x)+‘2值.jpg‘)
    before += zone_cal(‘d:/p/hx-‘+str(x)+‘2值.jpg‘)
for x in range(4, 7):
    binaryzation(‘d:/p/hx-‘+str(x)+‘.jpg‘, ‘d:/p/hx-‘+str(x)+‘2值.jpg‘)
    after += zone_cal(‘d:/p/hx-‘+str(x)+‘2值.jpg‘)
before /= 3
after /= 3
print(before, after)

‘‘‘0.27155324073124204 0.11879577511345958‘‘‘

网上用matlab做的比较多,原理也很清楚,就不多说了。没有处理噪声,细节也损失的比较多。

时间: 2024-11-25 17:56:03

用python计算菌斑面积的相关文章

ArcGIS应用——四种计算图斑面积的方法

ArcGIS中有多种方法可计算出图斑面积,本文总结了四种方法,是否可堪称史上最全? 1.计算几何 本人认为这是最适合非专业人士的方法,直接利用ArcGIS中的计算几何功能进行计算. a.首先添加一double类型字段,用来存储面积数值. b.执行计算几何操作 在随后的对话框里选择对应的属性即可. 2.字段计算器 字段计算器是一种较高级的用法,在计算计算器中可以编辑个性化个脚本代码(VB Script 或者 Python),进行一些复杂的计算.计算图斑面积是其中最简单的应用之一. Python脚本

Python计算斐波那契数列

利用Python计算第一个达到一百万位数的斐波那契数列各位数之和 结果为4501552 以下是我用到的代码,不是中间需要一些人工操作来加快收敛性,有兴趣读者可以写代码加快收敛 首先执行这个,可以大致确定一百万个数所在斐波那契序列的位置 i=1 j=1 k=i+j count=3 while count<4850000: i=j j=k k=i+j count+=1 result=str(k) print('k长度') k_len=len(result) print(k_len) sum=0 fo

数学之路-python计算实战(18)-机器视觉-滤波去噪(双边滤波与高斯滤波 )

高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到.高斯滤波的具体操作是:用一个模板(或称卷积.掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值. #滤波去噪 lbimg=cv2.GaussianBlur(newimg,(3,3),1.8) cv2.imshow('src',newimg) cv2.imshow('dst',lbimg) cv2.waitKey() cv2.destroyAllW

数学之路-python计算实战(16)-机器视觉-滤波去噪(邻域平均法滤波)

# -*- coding: utf-8 -*- #code:[email protected] #邻域平均法滤波,半径为2 import cv2 import numpy as np fn="test3.jpg" myimg=cv2.imread(fn) img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY) #加上椒盐噪声 param=20 #灰阶范围 w=img.shape[1] h=img.shape[0] newimg=np.array(img)

python计算均值方差

用Python求均值与方差,可以自己写,也可以借助于numpy,不过到底哪个快一点呢? 我做了个实验,首先生成9百万个样本: ? 1 2 3 nlist=range(0,9000000) nlist=[float(i)/1000000 for i in nlist] N=len(nlist) 第二行是为了让样本小一点,否则从1加到9百万会溢出的. 自己实现,遍历数组来求均值方差: ? 1 2 3 4 5 6 7 sum1=0.0 sum2=0.0 for i in range(N):     s

python计算auc指标

本文和大家分享的主要是python计算auc指标相关内容,一起来看看吧,希望对大家学习python有所帮助. 1.安装scikit-learn 1.1Scikit-learn 依赖 · Python (>= 2.6 or >= 3.3), · NumPy (>= 1.6.1), · SciPy (>= 0.9). 分别查看上述三个依赖的版本, python -V        结果:Python 2.7.3 python -c 'import scipy; print scipy.

python 计算校验和

校验和是经常使用的,这里简单的列了一个针对按字节计算累加和的代码片段.其实,这种累加和的计算,将字节翻译为无符号整数和带符号整数,结果是一样的. 使用python计算校验和时记住做截断就可以了. 这里仅仅是作为一个代码样本,权作标记,直接上代码 ''' Created on 2014年9月4日 @author: lenovo ''' import random ''' 实际计算校验和时,解释为无符号整数还是带符号整数,结果必然是一样的.因为基于补码方式存储,计算加法时都是按位加,然后该进位的就进

数学之路-python计算实战(21)-机器视觉-拉普拉斯线性滤波

拉普拉斯线性滤波,.边缘检测   Laplacian Calculates the Laplacian of an image. C++: void Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT ) Python: cv2.Laplacian(src, ddepth[, dst[, k

数学之路-python计算实战(22)-机器视觉-sobel非线性滤波

sobel非线性滤波,采用梯度模的近似方式 Sobel Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator. C++: void Sobel(InputArray src, OutputArray dst, int ddepth, int dx, int dy, intksize=3, double scale=1, double delta=0, int