Compare commits
3 Commits
d4b6fa6b53
...
ad14755405
| Author | SHA1 | Date | |
|---|---|---|---|
| ad14755405 | |||
| 918bdbf939 | |||
| 5a23b16a59 |
@@ -1,7 +1,7 @@
|
|||||||
# cDNA 微阵列图像处理作业
|
# cDNA 微阵列图像处理作业
|
||||||
|
|
||||||
> 刘航宇 | 河南理工大学计算机学院 | 2026
|
> 刘航宇 | 河南理工大学计算机学院 | 2026
|
||||||
|
测试
|
||||||
---
|
---
|
||||||
|
|
||||||
## 项目结构
|
## 项目结构
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# cDNA 微阵列网格划分 —— 简化版逐行代码讲解
|
# cDNA 微阵列网格划分 —— 逐行代码讲解
|
||||||
|
|
||||||
> 作者:刘航宇 | 河南理工大学计算机学院
|
> 作者:刘航宇 | 河南理工大学计算机学院
|
||||||
|
|
||||||
@@ -7,11 +7,11 @@
|
|||||||
## 写在前面
|
## 写在前面
|
||||||
|
|
||||||
这篇教程将 **逐行** 讲解 `cDNA_gridding_simple.py` 的每一段代码。
|
这篇教程将 **逐行** 讲解 `cDNA_gridding_simple.py` 的每一段代码。
|
||||||
目标读者是上《图像处理》课的同学,只要求你学过 Python 基础(列表、循环、numpy 数组)。
|
目标读者是上《图像处理》课的同学,只要求学过 Python 基础(列表、循环、numpy 数组)。
|
||||||
|
|
||||||
读完这篇文章,你会彻底理解:
|
读完这篇文章,你会彻底理解:
|
||||||
- 一张 cDNA 微阵列图像是怎么被自动划分成 22×22 个方格子的
|
- 一张 cDNA 微阵列图像是怎么被自动划分成 22×22 个方格子的
|
||||||
- 为什么这么简单的算法,结果能和原版完全一致(误差 0 像素)
|
- 为什么这么简单的算法,结果能和原版老师发的示范MATLAB代码效果完全一致(误差 0 像素)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -20,8 +20,7 @@
|
|||||||
我们有一张 cDNA 芯片图像(820×820 像素),上面整齐排列着绿色的荧光斑点。
|
我们有一张 cDNA 芯片图像(820×820 像素),上面整齐排列着绿色的荧光斑点。
|
||||||
|
|
||||||
目标:**画一个网格线,让每个斑点都被一个方框圈住**。
|
目标:**画一个网格线,让每个斑点都被一个方框圈住**。
|
||||||
|

|
||||||

|
|
||||||
|
|
||||||
怎么自动做到?核心思路只有一句话:
|
怎么自动做到?核心思路只有一句话:
|
||||||
|
|
||||||
@@ -305,8 +304,8 @@ is_positive = [False, True, True, True, False, True, True, True]
|
|||||||
位置: 0 1 2 3 4 5 6 7
|
位置: 0 1 2 3 4 5 6 7
|
||||||
数值: -20 20 30 25 -22 15 40 18
|
数值: -20 20 30 25 -22 15 40 18
|
||||||
正负: False True True True False True True True
|
正负: False True True True False True True True
|
||||||
↑ ↑ ↑ ↑
|
↑ ↑ ↑ ↑
|
||||||
变化(0→1) 变化(3→4) 变化(4→5)
|
变化(0→1) 变化(3→4) 变化(4→5)
|
||||||
```
|
```
|
||||||
|
|
||||||
`is_positive[i] != is_positive[i-1]` 为 True 时,说明第 `i` 个像素处发生了正负翻转,也就是"跨过了零点"。
|
`is_positive[i] != is_positive[i-1]` 为 True 时,说明第 `i` 个像素处发生了正负翻转,也就是"跨过了零点"。
|
||||||
@@ -339,7 +338,7 @@ is_positive = [False, True, True, True, False, True, True, True]
|
|||||||
```
|
```
|
||||||
减阈值后的信号:
|
减阈值后的信号:
|
||||||
───── + + + + ────── + + + + ────── + + + + ─────
|
───── + + + + ────── + + + + ────── + + + + ─────
|
||||||
↑ 斑点 ↑ ↑ 斑点 ↑ ↑ 斑点 ↑
|
↑ 斑点 ↑ ↑ 斑点 ↑ ↑ 斑点 ↑
|
||||||
c1 c2 c3 c4 ...
|
c1 c2 c3 c4 ...
|
||||||
|
|
||||||
c1: 负→正 (进入第一个斑点) ← 开头是负,跳过它
|
c1: 负→正 (进入第一个斑点) ← 开头是负,跳过它
|
||||||
@@ -2,7 +2,9 @@
|
|||||||
cDNA微阵列图像处理 —— 简化版网格划分
|
cDNA微阵列图像处理 —— 简化版网格划分
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
算法步骤(适合课堂讲解):
|
D:\ProgramData\anaconda3\envs\my_env\python.exe src/cDNA_gridding_simple.py
|
||||||
|
|
||||||
|
算法步骤:
|
||||||
|
|
||||||
1. 彩色图 → 灰度图
|
1. 彩色图 → 灰度图
|
||||||
2. 横轴投影:对每一列的所有像素灰度值求和 → 得到一条曲线
|
2. 横轴投影:对每一列的所有像素灰度值求和 → 得到一条曲线
|
||||||
|
|||||||
Reference in New Issue
Block a user