0%

问题描述 给定一个多边形区域,怎样判断某个点是否在该区域内? 如下图所示的蓝色多边形框,判断某点是否在该框内。 定义域 先写出该蓝色框的坐标序列: 1 2 3 4 import numpy as np import matplotlib.pyplot as plt poly = np.array([(0,0),(1,0),(0.7,0.7),(1,1),(0,1),(0.5,0.5),(0,0)]) 注意,该坐标序列是首尾相接的。 然后,定义出任意数量、任意位置的随机点: 1 pts = np.random.rand(80).reshape((40,2)) 这里给出了
Read more »

问题描述 图像中有一条线,如何判断这条线的转折点? 比如下面一张图: 目的是找到图中的三个转折点。 解法 找到轮廓线 1 2 3 img = cv2.imread('test.png', 0) conts = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0][0] xs, ys = conts[:,:,0], conts[:,:,1] 这一步实际作用是通过寻找轮廓线,从像素类型的位图中提取有意义的这条线的坐标序列,即矢量序列。 同时将横坐标和纵坐标分别提取出来。 高斯模糊 1 2 gxs =
Read more »

简介 本文介绍ImagePy中的智能画笔工具,它能够很方便地对图像进行像素级标注,尤其是在复杂图像上进行多种类别的标注时,用好这个智能画笔,能使效率飞升。 先来一连串的功能介绍镇楼: (1)鼠标左键 左键:具有联想功能的局部标注 Ctrl+左键单击:吸取颜色 Ctrl+左键:普通画笔 Shift+左键:落笔选定保护色,在矩形框内闭合且非保护色区域被填充 Alt+左键:落笔选定保护色,在矩形框内对该色进行描边 Ctrl+Alt+左键:落笔选定保护色,对任意的非保护色的区域进行标注 (2)鼠标右键 右键:全局填充 Shift+右键:落笔所在的保护色的内部闭合区域被填充 Ctrl+右键:落笔所在的
Read more »

2024-7-14 说明 今天将博客从vercel迁移到了cloudflare。步骤也非常简单,跟vercel类似,将github库关联到cloudflare即可,可参考该博客以及这个博客。 需要注意的点有: * 在godaddy上配置cloudflare的域名服务器 * 在cloudflare的dns里配置两个CNAME,一个是’qixinbo.info’,一个是’www.qixinbo.info’。 * 还要在Workers和Pages里单独设置一下“自定义域”。 说明 在最近一次在不同电脑间迁移时,使用了Vercel这个站点托管工具,有如下几个优点: * 完全不需要像下面那
Read more »

概览 赛事描述 Kaggle上正在进行一项名为“HuBMAP: Hacking the Kidney”的竞赛,链接见这里,总奖金是6万美金,该竞赛的目的是为了检测人体组织中的functional tissue units (FTUs)。FTU的定义是:three-dimensional block of cells centered around a capillary, such that each cell in this block is within diffusion distance from any other cell in the same block,感觉类似于细胞的概念,
Read more »

本文是对极客时间app上王争老师的<数据结构与算法之美>的课堂笔记。 基础概念 算法与数据结构是编程的内功。 从广义上讲,数据结构就是指一组数据的存储和逻辑结构。算法就是操作数据的一组方法。 数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。 因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。(比如,因为数组具有随机访问的特点,常用的二分查找算法需要用数组来存储数据。但如果我们选择链表这种数据结构,二分查找算法就无法工作了,因为链表并不支持随机访问。) 数据结构与算法中最重要的概念——复杂度分析:数据结构和算法解决的是如何更省、更
Read more »

sknw是一个从骨架图中创建图网络的库,代码在这里。 它不仅可以实现将单线转变成图graph的效果,而且里面的trace函数还可以实现像素追踪,将图像中的单线的坐标序列依次提取出来,从而将图像转变为矢量图。(sknw可以对闭合曲线进行坐标提取,对于闭合曲线,也可以使用find_contour来提取这些坐标序列) 输入图像 输入图像必须是一个二值的骨架图。 比如,这里的示例图像矩阵为: 1 2 3 4 5 6 7 8 9 10 img = np.array([ [0,0,0,1,0,0,0,0,0], [0,0,0,1,0,0,0,1,0], [0,0,0,1,0
Read more »

Cellpose是一个对于胞状物体(比如细胞、晶粒、核、砖块等)进行分割的非常优秀的通用算法,其体现了深度学习在分割这类物体时的强大能力,同时其泛化效果也远超过传统图像处理算法,展现了数据驱动的深度学习所特有的“暴力美学”。 试用 Cellpose的源代码见这里。 同时开发者还搭建了网站来方便用户试用Cellpose: Cellpose快速体验网站:用户可以直接上传自己的图像来直接调用Cellpose,第一时间获得Cellpose的处理效果。 如果用户觉得好,那么可以接着往下深度体验或钻研Cellpose了。 安装 Cellpose的安装有多种方式: Google Colab在线运行 开
Read more »

概览 上一篇介绍了如何安装和使用Cellpose,相当于将Cellpose当做一个开箱即用的软件。实际上Cellpose还是一个开源的代码库,开发者可以深入研究它的算法,并进行调用、修改和完善等。 本文尝试对Cellpose的运行机理做一个研究,包括它的标注数据的格式、神经网络的架构、神经网络的输入和输出等。 标注数据格式 假设有这么一张要分割的图像,大小为10像素乘以10像素(选择这么小的像素矩阵以方便打印和查看数值),背底为黑色,图像中间有一个白色圆盘,即: 它的像素矩阵为: 1 2 3 4 5 6 7 8 9 10 11 array([[ 0., 0., 0., 0
Read more »

简介 本文是对ZetCode上wxPython的摘抄学习,原系列文章见这里。 wxPython是一个开发桌面端图形界面的跨平台函数库,开发语言为Python,它是基于C++的函数库wxWidgets的封装。 wxpython有大量组件,它们可以从逻辑上(注意是逻辑上)这样划分: (1)基础组件 这些组件为其所派生的子组件提供基础功能,通常不直接使用。 (2)顶层组件 这些组件相互独立存在。 (3)容器 这些组件包含其他组件。 (4)动态组件 这些组件可以被用户所交互编辑。 (5)静态组件 这些组件用来展示信息,无法被用户所交互编辑。 (6)其他组件 这些组件包括状态栏、工具栏、菜
Read more »