一、原理与思路

图像由无数的像数构成,python读取图片每一像数点的灰度值,从黑-白的灰度值为0~255,即越黑的地方灰度值越小,越白的地方灰度值越大。显然,我们希望越黑的地方灰度值越大,因此需要做一个反转,即用255减去各个像数点灰度值。接着,将所有非条带部分的像数点灰度值改为0,而蛋白条带部分灰度值保持不变。最后,只要识别出每个蛋白条带的区域,将其中所有像数点灰度值和。

图1  示例图像

二、python代码

# 导入模块from numpy import *from PIL import Image# 构建一个函数读取灰度值图像def pictureRead(path):  # path为图片文件路径im = array(Image.open(path).convert('L'))im = 255 - im  # 黑白灰度值转换# 白色部分灰度值转换为0,黑色部分保持原值row, col = im.shapefor i in range(row):for j in range(col):if im[i,j] < 128:im[i,j] = 0return im# 构建一个函数识别蛋白条带区域def discern(array):list = []array = 1 * (array > 128) # 转换为二值图像,白色为0,黑色为1# 对每一列像素值求和,若与前一列结果不一致则判断为条带边缘row, col = array.shapefor i in range(col):if (sum(array[:,i]) == 0) != (sum(array[:,i-1])==0):list.append(i)return list# 构建一个函数求和各条带灰度值def greySum(array, list):sumlist = []for i in range(len(list)):if i % 2 ==0:sum = array[:,list[i]:list[i+1]].sum()sumlist.append(sum)return sumlist#  运行if __name__ == '__main__':path = r'C:\test.png'im = pictureRead(path)list = discern(im)area = greySum(im,list)print(area)

三、代码解析

1)导入模块

程序运行需要导入numpy和PIL模块,如果你的python还未安装这两个模块,程序出错。

2)pictureRead()函数

pictureRead()函数用于读取图像,并进行一些转换操作。这个函数需要您提供一个图像文件路径的字符串参数path(如示例所示),经这一步处理后图像如下:

图2  

图2中,蛋白条带轮廓清晰可见,但是示例图像中第一条很浅的条带消失了,这是函数中把灰度值小于128的像数点都改为0了,所以太浅的条带,此程序可能无法扫描,或者您可以试着把128调低,看看能否把较浅的条带识别出来。

3)discern()函数

discern()函数先将灰度图像转换成二值图像,用于识别条带左右边缘,转换后的二值图像如下:

图3

此函数返回一个列表,此例为:[76, 128, 134, 183, 194, 245, 249, 302],第1、2个值为第一个条带左右边缘的列下标,第3、4个为第二个条带左右边缘的列下标,依次类推。

4)greySum()函数

根据discern()函数获得的列表信息,对图2的灰度图像的蛋白条带区域灰度值求和。

最后结果返回一个列表:[166251, 100107, 129382, 158781]即表示各条带灰度值


四、局限性

1)扫描灰度值的图像,蛋白条带间不要连在一块,否则将视为一个条带。

2)蛋白条带灰度太低无法识别,需做修改。

3)结果可靠性有待评价,可与其他工具相比较。

western blot蛋白条带灰度值扫描——python相关推荐

  1. 用python统计图片中的点_用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)...

    我就废话不多说了,大家还是直接看代码吧! import PIL.Image import numpy import os import shutil def sum_right(path): img ...

  2. python绘制灰度图片直方图-python+opencv 灰度直方图及其二值化

    图像直方图(histogram)是图像的统计学特征,常用于了解图像的基本特征以便分析.不过图像的直方图不具有空间特征. 图像的灰度直方图(histogram),就是将图像转化成灰度图像之后,统计各个像 ...

  3. 第6章 Python 数字图像处理(DIP) - 彩色图像处理2 - 灰度分层(灰度分割)和彩色编码,灰度值到彩色变换,Gray to RGB

    第6章主要讲的是彩色图像处理,一些彩色模型如RGB,CMK,CMYK,HSI等色彩模型:彩色模型的变换关系:还包含由灰度图像怎样处理成假彩色图像:使用彩色分割图像等.本章比较少理论还有变换的描述,主要 ...

  4. Western Blot

    Western Blot Western免疫印迹(Western Blot)是将蛋白质转移到膜上,然后利用抗体进行检测.对已知表达蛋白,可用相应抗体作为一抗进行检测,对新基因的表达产物,可通过融合部分 ...

  5. WB蛋白质印迹法(Western blot)

    蛋白质印迹法(免疫印迹实验)即Western Blot.它是分子生物学.生物化学和免疫遗传学中常用的一种实验方法.用于样品特定蛋白在样品中表达相对表达量进行检测. 1.实验流程 2.实验周期及交付结果 ...

  6. Western blot 技术

    (western blot) 印迹技术 一般是你先实验进行了一个电泳,然后把电泳后的产物(如DNA.蛋白质)通过印迹技术转移到一个膜上,然后使用特异性的能识别此产物的探针或者抗体来识别,从而检测产物. ...

  7. Jackson关于Western Blot、IHC 和 ELISA 的显色检测分析

    前言: 显色底物用于比色检测.它们简单易用.适用于大多数免疫技术--从免疫组织化学到蛋白质印迹和 ELISA,它们提供了一种J具成本效益的检测方法. 这期的主题是Jackson ImmunoResea ...

  8. 【转】DICOM图像像素值、灰度值与CT值!!!!!

    转自:https://blog.csdn.net/syz201558503103/article/details/107238940 做医学图像处理会涉及DICOM图像,初学者应该要对图像像素有一定了 ...

  9. 灰度值取值范围_第三章 灰度变换与空间滤波-(三)直方图之直方图均衡

    听说:单反穷三代,摄影毁一生. 本节目录 3.1 直方图均衡 3.2 直方图匹配(规定化) 3.3 局部直方图处理 3.4 图像增强中使用直方图 真是感谢雷神,举例子还是以灰度图为主,减负了不少.是因 ...

最新文章

  1. scanf(%s,a)和gets(a)的差别
  2. 人工智能案例TOP50,AI是干出来的,不是吹出来的
  3. AT2705 Yes or No(组合数学)
  4. 搭建认证服务器 - Spring Security Oauth2.0 集成 Jwt 之 【授权码认证流程】 总结
  5. 数据结构之头结点链表的三种插入方式(头插法,尾插法,在pos处插入)
  6. Python笔记-Can’t reconnect until invalid transaction is rolled back
  7. java 蓝桥杯算法训练 求1加到x的和(number)
  8. html 单元格被撑开_table td宽度被撑开的问题。棘手~_html/css_WEB-ITnose
  9. CentOS7编译安装ntp
  10. HDU2148 Score【序列处理】
  11. Scala实现Mapreduce程序4-----数据去重
  12. CART决策树----基尼指数划分
  13. Redis持久化(一)-RDB文件的创建和载入
  14. 【數論】【搜索】【SCOI2009】遊戲
  15. Linux/Unix关机、重启(shutdown\reboot\halt\init)等命令
  16. 一滴水泛起行业波纹,惠民保给保险业带来的启示录
  17. 给国外教授发邮件_如何给您的教授发送电子邮件并获得快速回复
  18. 指针在c语言中的概念,c语言中指针概念
  19. 在ipad上刷android系统更新,全自动刷安卓4.0 索尼SGPT111刷机教程
  20. 2014暑假总结——美好的事情即将发生

热门文章

  1. S7-1500连接 V90 PN 实现运动控制
  2. 方正计算机如何用u盘安装系统,方正台式电脑如何设置U盘启动
  3. 大整数乘法---C语言实现
  4. VMware 软件改变软件颜色
  5. 四级翻译必记词汇,词组(收藏起来有空瞄瞄吧)
  6. 成都优优聚电子商务:促进转化的技巧
  7. 从菜鸟到高手演变-----Java学习方法
  8. 【源码更新】话费油卡水电小程序系统源码
  9. Qt Creator 报错:启动程序失败,路径或者权限错误
  10. Android中级第五讲--GPRS定位的实现