zoukankan      html  css  js  c++  java
  • 用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做的比较多,原理也很清楚,就不多说了。没有处理噪声,细节也损失的比较多。

  • 相关阅读:
    逻辑学的基本运算
    第一性原理:First principle thinking是什么?
    人类认识的基本技能
    编程的本质:简化+抽象+再现
    区块链
    信号、系统、传递、树
    MVVM
    数据驱动 状态驱动
    事件与状态机 事件驱动编程
    数据一致性举例:登录系统
  • 原文地址:https://www.cnblogs.com/imageSet/p/7496764.html
Copyright © 2011-2022 走看看