返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现数字图像处理染色体计数示例
  • 903
分享到

Python实现数字图像处理染色体计数示例

2024-04-02 19:04:59 903人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、实验内容 二、实验步骤三、代码四、结果一、实验内容  对于下面这幅图像,编程实现染色体计数,并附简要处理流程说明。 二、实验步骤 1.中值滤波 2.图像

一、实验内容 

对于下面这幅图像,编程实现染色体计数,并附简要处理流程说明。

二、实验步骤

1.中值滤波

2.图像二值化

3.膨胀图像

4.腐蚀图像

5.计算光影背景

6.移除背景

7.检测染色体

三、代码

import cv2
import numpy as np
# 计算光影背景
def calculateLightPattern(img4):
    h, w = img4.shape[0], img4.shape[1]
    img5 = cv2.blur(img4, (int(w/3), int(w/3)))
    return img5
# 移除背景
def removeLight(img4, img5, method):
    if method == 1:
        img4_32 = np.float32(img4)
        img5_32 = np.float32(img5)
        ratio = img4_32 / img5_32
        ratio[ratio > 1] = 1
        aux = 1 - ratio
        # 按比例转换为8bit格式
        aux = aux * 255
        aux = np.uint8(aux)
    else:
        aux = img5 - img4
    return aux
def ConnectedComponents(aux):
    num_objects, labels = cv2.connectedComponents(aux)
    if num_objects < 2:
        print("connectedComponents未检测到染色体")
        return
    else:
        print("connectedComponents检测到染色体数量为:", num_objects - 1)
    output = np.zeros((aux.shape[0], aux.shape[1], 3), np.uint8)
    for i in range(1, num_objects):
        mask = labels == i
        output[:, :, 0][mask] = np.random.randint(0, 255)
        output[:, :, 1][mask] = np.random.randint(0, 255)
        output[:, :, 2][mask] = np.random.randint(0, 255)
    return output
def ConnectedComponentsStats(aux):
    num_objects, labels, status, centroids = cv2.connectedComponentsWithStats(aux)
    if num_objects < 2:
        print("connectedComponentsWithStats未检测到染色体")
        return
    else:
        print("connectedComponentsWithStats检测到染色体数量为:", num_objects - 1)
    output = np.zeros((aux.shape[0], aux.shape[1], 3), np.uint8)
    for i in range(1, num_objects):
        mask = labels == i
        output[:, :, 0][mask] = np.random.randint(0, 255)
        output[:, :, 1][mask] = np.random.randint(0, 255)
        output[:, :, 2][mask] = np.random.randint(0, 255)
    return output
def FindContours(aux):
    contours, hierarchy = cv2.findContours(aux, cv2.RETR_EXTERNAL, cv2.CHaiN_APPROX_SIMPLE)
    if len(contours) == 0:
        print("findContours未检测到染色体")
        return
    else:
        print("findContours检测到染色体数量为:", len(contours))
    output = np.zeros((aux.shape[0], aux.shape[1], 3), np.uint8)
    for i in range(len(contours)):
        cv2.drawContours(
            output,
            contours,
            i,
            (np.random.randint(0, 255),
             np.random.randint(0, 255),
             np.random.randint(0, 255)), 2)
    return output
# 读取图片
img = cv2.imread('img.png', 0)
pre_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # 二值化函数
# 第一步:中值滤波
# 中值滤波
img1 = cv2.medianBlur(img, 3)
# 显示并保存图片
cv2.imshow('gray', img)
cv2.imshow('medianBlur', img1)
cv2.imwrite('medianBlur.jpg', img1)
# 第二步:图像二值化
# 图像二值化
ret, img2 = cv2.threshold(img1, 140, 255, 0, img1)  # 二值化函数
# 显示并保存图片
cv2.imshow('threshold', img2)
cv2.imwrite('threshold.jpg', img2)
# 第三步:膨胀图像
dilate_kernel = np.ones((3, 3), np.uint8)
img3 = cv2.dilate(img2, dilate_kernel)
# 显示并保存图片
cv2.imshow('dilate', img3)
cv2.imwrite('dilate.jpg', img3)
# 第四步:腐蚀图像
erode_kernel = np.ones((7, 7), np.uint8)
img4 = cv2.erode(img3, erode_kernel)
# 显示并保存图片
cv2.imshow('erode', img4)
cv2.imwrite('erode.jpg', img4)
# 第五步:计算光影背景
img5 = calculateLightPattern(img4)
# 显示并保存图片
cv2.imshow('LightPattern', img5)
cv2.imwrite('LightPattern.jpg', img5)
# 第六步:移除背景
aux = removeLight(img4, img5, 1)
# 显示并保存图片
cv2.imshow('removeLight', aux)
cv2.imwrite('removeLight.jpg', aux)
# 第七步:检测轮廓
output1 = ConnectedComponents(aux)
output2 = ConnectedComponentsStats(aux)
output3 = FindContours(aux)
# 显示并保存图片
cv2.imshow('connectedComponents', output1)
cv2.imwrite('connectedComponents.jpg', output1)
cv2.imshow('connectedComponentsWithStats', output2)
cv2.imwrite('connectedComponentsWithStats.jpg', output2)
cv2.imshow('findContours', output3)
cv2.imwrite('findContours.jpg', output3)
cv2.waiTKEy(0)

四、结果

1.中值滤波

2.图像二值化

3.膨胀图像

4.腐蚀图像

5.计算光影背景

6.移除背景

7.检测染色体

(1)connectedComponents.jpg

(2)connectedComponentsWithStats.jpg

(3)findContours.jpg

染色体个数为46

以上就是python实现数字图像处理染色体计数示例的详细内容,更多关于Python数字图像处理染色体计数的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python实现数字图像处理染色体计数示例

本文链接: https://lsjlt.com/news/118558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python实现数字图像处理染色体计数示例
    目录一、实验内容 二、实验步骤三、代码四、结果一、实验内容  对于下面这幅图像,编程实现染色体计数,并附简要处理流程说明。 二、实验步骤 1.中值滤波 2.图像...
    99+
    2024-04-02
  • Python如何实现数字图像处理染色体计数
    本篇内容主要讲解“Python如何实现数字图像处理染色体计数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现数字图像处理染色体计数”吧!一、实验内容 对于下面这幅图像...
    99+
    2023-07-02
  • python数字图像处理之图像自动阈值分割示例
    目录引言1、threshold_otsu2、threshold_yen3、threshold_li4、threshold_isodata5、threshold_adaptive引言 ...
    99+
    2024-04-02
  • python数字图像处理之图像简单滤波实现
    目录引言1、sobel算子2、roberts算子3、scharr算子4、prewitt算子5、canny算子6、gabor滤波7、gaussian滤波8、median9、水平、垂直边...
    99+
    2024-04-02
  • python数字图像处理像素的访问与裁剪示例
    目录引言彩色图片访问方式为:灰度图片访问方式为:例1:输出小猫图片的G通道中的第20行30列的像素值例2:显示红色单通道图片例3:对小猫图片随机添加椒盐噪声例4:对小猫图片进行裁剪例...
    99+
    2024-04-02
  • python数字图像处理之估计噪声参数
    估计噪声参数 周期噪声的参数通常是通过检测图像的傅里叶谱来估计的。 只能使用由传感器生成的图像时,可由一小片恒定的背景灰度来估计PDF的参数。 来自图像条带的数据的最简单用途是,计算...
    99+
    2024-04-02
  • python数字图像处理实现图像的形变与缩放
    目录skimage的transform模块1、改变图片尺寸resize2、按比例缩放rescale3、旋转 rotate4、图像金字塔skimage的transform模块 图像的形...
    99+
    2024-04-02
  • Python线性点运算数字图像处理示例详解
    目录点运算定义分类线性点运算分段线性点运算非线性点运算对数变换幂次变换点运算 定义 分类 线性点运算 例子: 分段线性点运算 非线性点运算 对数变换 幂次变换 ...
    99+
    2024-04-02
  • python数字图像处理之图像的批量处理
    目录正文图片集合函数批量读取批量转换为灰度图批量保存正文 有些时候,我们不仅要对一张图片进行处理,可能还会对一批图片处理。这时候,我们可以通过循环来执行处理,也可以调用程序自带的图片...
    99+
    2024-04-02
  • Java数字图像处理之图像灰度处理怎么实现
    本篇内容介绍了“Java数字图像处理之图像灰度处理怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介图像灰度化处理可以作为图像处...
    99+
    2023-07-02
  • Python基本运算几何运算处理数字图像示例
    目录平移镜像水平镜像垂直镜像旋转以图像左上角为旋转中心以图像中心为旋转中心缩放插值算法最近邻插值算法双线性插值算法三次内插法改变图像中物体对象(像素)之间的空间关系。 平移 #...
    99+
    2024-04-02
  • python数字图像处理数据类型及颜色空间转换
    目录一、图像数据类型及转换1、unit8转float2、float转uint8二、颜色空间及其转换例:rgb转灰度图其它的转换例:rgb转hsv一、图像数据类型及转换 在skimag...
    99+
    2024-04-02
  • java实现图片反色处理示例
    本文实例为大家分享了java实现图片反色处理的具体代码,供大家参考,具体内容如下 效果对比 原图 反色处理 原图 反色处理 核心代码实现 import javax.ima...
    99+
    2024-04-02
  • python之数字图像处理方式
    目录基本概念图像增强整体代码线性变换分段线性变换对数变换幂律变换直方图图像滤波平滑图像锐化图像总结基本概念 数字图像定义 对于一幅图像,我们可以将其放入坐标系中,这里取图像左上定点为...
    99+
    2023-05-19
    python数字图像处理 python数字图像 python图像处理
  • python数字图像处理之对比度与亮度调整示例
    目录skimage包的exposure模块1、gamma调整2、log对数调整3、判断图像对比度是否偏低4、调整强度skimage包的exposure模块 图像亮度与对比度的调整,是...
    99+
    2024-04-02
  • python数字图像处理环境安装与配置过程示例
    目录引言一、需要的安装包二、下载并安装 anaconda三、简单测试四、skimage包的子模块引言 一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身...
    99+
    2024-04-02
  • python数字图像处理图像的绘制详解
    目录正文一、用figure函数和subplot函数分别创建主窗口与子图二、用subplots来创建显示窗口与划分子图三、其它方法绘图并显示正文 实际上前面我们就已经用到了图像的绘制,...
    99+
    2024-04-02
  • python数字图像处理-图像噪声与去噪
    图像噪声 椒盐噪声 概述: 椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。椒盐噪声是一种因为信号脉冲强度引起的噪声...
    99+
    2023-01-31
    噪声 图像处理 图像
  • python数字图像处理skimage读取显示与保存图片
    目录引言一、从外部读取图片并显示二、程序自带图片三、保存图片四、图片信息引言 skimage提供了io模块,顾名思义,这个模块是用来图片输入输出操作的。为了方便练习,也提供一个dat...
    99+
    2024-04-02
  • Python+OpenCV图像处理之直方图统计的示例分析
    这篇文章主要为大家展示了“Python+OpenCV图像处理之直方图统计的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python+OpenCV图像处理之直方图统计的示例分析”这篇文章...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作