This Chapter is all about image segmentation.
I still not finished whole chapter, but here try to publish some for reference.

这里写目录标题

  • 基础知识
import sys
import numpy as np
import cv2
import matplotlib
import matplotlib.pyplot as plt
import PIL
from PIL import Imageprint(f"Python version: {sys.version}")
print(f"Numpy version: {np.__version__}")
print(f"Opencv version: {cv2.__version__}")
print(f"Matplotlib version: {matplotlib.__version__}")
print(f"Pillow version: {PIL.__version__}")
def normalize(x, ymin=0, ymax=1):"""Description:- Map x into desired range[ymin, ymax], according to the math function $$y = \frac{(y_{\text{max}} - y_{\text{min}}) (x - x_{\text{min}})}{(x_{\text{max}} - x_{\text{min}})} + y_{\text{min}}$$Parameters:- x:    input array- ymin: desired min value, such as -1, or whatever you want- ymax: desired max value, such as 1, or other you need"""result = (ymax - ymin) * (x - x.min()) / (x.max()-x.min()) + ymin#################### old one ####################### result = (x - x.min()) / (x.max() - x.min())return result

基础知识

令RRR表示一幅图像占据的整个空间区域。我们可以将图像分割视为把RRR分为nnn个子区域R1,R2,⋯,RnR_1,R_2,\cdots,R_nR1​,R2​,⋯,Rn​的过程,满足:

  • (a) ⋃i=1nRi=R\bigcup_{i=1}^{n} R_{i} = R⋃i=1n​Ri​=R。
  • (b) Ri,i=0,1,2,⋯,nR_{i}, i=0, 1, 2, \cdots, nRi​,i=0,1,2,⋯,n 是一个连通集。
  • (c) 对所有iii和jjj, i≠j,Ri⋂Rj=∅i\neq j, R_{i}\bigcap R_{j} = \emptyseti​=j,Ri​⋂Rj​=∅。
  • (d) Q(Ri)=TRUE,i=0,1,2,⋯,nQ(R_{i})=TRUE, i=0, 1, 2, \cdots, nQ(Ri​)=TRUE,i=0,1,2,⋯,n。
  • (e) 对于任何邻接区域RiR_{i}Ri​和RjR_{j}Rj​, Q(Ri⋃Rj)=FALSEQ(R_{i} \bigcup R_{j}) = FALSEQ(Ri​⋃Rj​)=FALSE。

其中Q(Ri)Q(R_{i})Q(Ri​)是定义在集合RkR_{k}Rk​中的点上的一个谓词逻辑。

def std_seg(image, thred=0, stride=4):"""Description:Segment image caculating standard deviationParemeters:image: input grayscale imagethred: thredshold of the standard diviationstride: control the neighborhoodReturn:Binary segment image"""h, w = image.shape[:2]result = image.copy()# here we use stride the create non-overlap region, if we not need stride here, we still can get very good result# or we set stride smaller than 8, then we can get better resultfor i in range(0, h, stride):for j in range(0, w, stride):temp = image[i:i+stride, j:j+stride]if np.std(temp) <= thred:result[i:i+stride, j:j+stride] = 0else:result[i:i+stride, j:j+stride] = 255return result
# standard deviation segment, according the result below, it seems the img_f is not 8x8 region, is about 4-5
img_d = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH10/Fig1001(d)(noisy_region).tif", -1)
img_seg = std_seg(img_d, thred=0, stride=5)fig = plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1), plt.imshow(img_d, 'gray'), plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(img_seg, 'gray'), plt.xticks([]), plt.yticks([])
plt.tight_layout()
plt.show()

第10章 Python 数字图像处理(DIP) - 图像分割 基础知识 标准差分割法相关推荐

  1. 第2章 Python 数字图像处理(DIP) --数字图像基础5 -- 算术运算、集合、几何变换、傅里叶变换等

    目录 数字图像处理所有的基本数字工具介绍 算术运算 集合运算和逻辑运算 空间运算 向量与矩阵运算 图像变换 图像和随机变量 数字图像处理所有的基本数字工具介绍 算术运算 # 相加 img_ori = ...

  2. 第2章 Python 数字图像处理(DIP) --数字图像基础4 -- 像素间的一些基本关系 - 邻域 - 距离测试

    目录 像素间的一些基本关系 像素的相信像素 距离测试 import sys import numpy as np import cv2 import matplotlib import matplot ...

  3. 第2章 Python 数字图像处理(DIP) --数字图像基础1 - 视觉感知要素 - 亮度适应与辨别

    数字图像基础1 视觉感知要素 亮度适应与辨别 import sys import numpy as np import cv2 import matplotlib import matplotlib. ...

  4. 第2章 Python 数字图像处理(DIP) --数字图像基础2 - 图像感知要素 - 图像取样和量化 - 空间分辨率和灰度分辨率

    目录 图像感知与获取 一个简单的成像模型 图像取样和量化 空间分辨率和灰度分辨率 图像感知与获取 一个简单的成像模型 我们用形如 f(x,y)f(x,y)f(x,y) 的二维函数来表示图像.在空间坐标 ...

  5. 第2章 Python 数字图像处理(DIP) --数字图像基础3 - 图像内插 - 最近邻内插 - 双线性插值 - 双三次内插 - 图像放大

    目录 图像内插 放大图像 图像内插 内插通常在图像放大.缩小.旋转和几何校正等任务中使用.内插并用它来调整图像的大小(缩小和放大),缩小和放大基本上采用图像重取样方法 最近邻内插,这种方法将原图像中最 ...

  6. 第1章 Python 数字图像处理(DIP) --绪论

    Python 数字图像处理 关于本专栏 此专栏为 Python 数字图像处理(DIP)(冈萨雷斯版),专栏里文章的内容都是来自书里,全部手打,非OCR,因为很多公式,都是用LaTex输入,力求更好看的 ...

  7. 第4章 Python 数字图像处理(DIP) - 频率域滤波10 - 使用低通频率域滤波器平滑图像 - 理想、高斯、巴特沃斯低通滤波器

    目录 使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 高斯低通滤波器(GLPF) 巴特沃斯低通滤波器 低通滤波的例子 使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 在以原点为中心 ...

  8. 第5章 Python 数字图像处理(DIP) - 图像复原与重建10 - 空间滤波 - 统计排序滤波器 - 中值、最大值、最小值、中点、修正阿尔法均值滤波器

    标题 统计排序滤波器 中值.最大值.最小值.中点 滤波器 修正阿尔法均值滤波器 统计排序滤波器 中值.最大值.最小值.中点 滤波器 f^(x,y)=median{g(r,c)}(5.27)\hat{f ...

  9. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波10 - 直方图处理 - 局部直方图处理

    这里写目录标题 局部直方图处理 局部直方图处理 因为像素是由基于整个图像的灰度的变换函数修改的.这种全局性方法适合于整体增强,但当目的是增强图像中几个小区域的细节时,通常就会失败.这是因为在这些小区域 ...

最新文章

  1. 3d卷积神经网络_HSNets:使用卷积神经网络从2D轮廓预测3D人体模型
  2. classloader
  3. 1Python生成高质量Html文件:Pyh模块+Bootstrap框架
  4. csgo怎么控制电脑玩家_电脑远程控制怎么弄
  5. Android 功耗(14)----Android功耗 问题debug处理
  6. thinkphp5连接数据库mysql_ThinkPHP学习(三)配置PHP5支持MySQL,连接MySQL数据库
  7. [1]elasticsearch源码编译
  8. 为什么python胶水语言_为什么只有python成了胶水语言?
  9. cjson构建_利用cJSON解析和创建JSON字符串
  10. linux下文件恢复方法,Linux下误删文件恢复办法
  11. 设计模式 | 单例模式
  12. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)
  13. pc模式 华为mate30_华为Mate30系列10个隐藏黑科技
  14. 安徽电信翼拍照显示服务器异常,人像拍照环境指南
  15. 学术综合英语计算机国际会议开幕词,会议开幕词英文.doc
  16. 【Book 133】Illuminate-Harness the Positive Power of negative Thinking
  17. 计算机与医药信息学,浙江大学药物信息学研究所
  18. Postman安装出错.NET Framework 4.5 failed to install
  19. RS232与RS485与RS422的区别
  20. windows WebRTC下载编译

热门文章

  1. 1070: [SCOI2007]修车
  2. Oracle数据库 查看表是否是 索引组织表的方法
  3. 六、利用frp穿透连接内网的linx系统和windows系统
  4. 《SAS编程与数据挖掘商业案例》学习笔记之十五
  5. thinkphp5 内置接口开发与使用
  6. 百万级并发 Node.js也能行
  7. 手摸手,带你用vue撸后台 系列一(基础篇) - 掘金
  8. CSS3笔记之定位篇(一)relative
  9. Spring 源码分析 spring-core
  10. Cobub无码埋点关键技术的实现