我知道编辑这个网站吗?

SoC 2010 想法

# 欢迎!

斐济申请了 Google Summer of Code 2010 计划,但没有被接受。

此页面包含从斐济用户和开发人员社区精选的项目想法。您可以通过阅读一些项目描述以及产生它们的邮件列表线程来开始。还可以考虑加入开发人员邮件列表,或在 IRC 上找到我们。详细信息请参见Help

如果列出的项目都不适合您,但您有自己的项目想法,只需在开发人员邮件列表中向我们提出您的想法即可! (当然,应该和斐济有关……)

一般要求

所有项目都有以下基本要求:

  • 除非另有说明,项目将需要使用 Java 进行编程。
  • 所有材料必须根据第 §§1§§§ 第 2 版发布。
  • 个别学生应保留其作品的版权。
  • 项目必须在 Git 中跟踪和管理(我们将帮助您设置存储库)。
  • 每周项目状态报告应发送给项目导师。每份状态报告应概述该周完成的工作、阻碍该周目标完成的任何问题以及您下周的目标。这将帮助您将项目分解为可管理的块,也将帮助项目的导师更好地支持您的努力。

我们鼓励感兴趣的学生阅读Advice for GSoC Students Page,因为它提供了极好的建议,可以帮助您选择项目并制定提案。

如果您的提案被斐济发展社区接受,您将需要在夏季全职致力于该提案。如果您想休假一周,这很酷,但请记住,Google 在夏天雇用您来帮助我们改善斐济。这应该是你的重点。不要指望您每周只能为您的项目工作 10 个小时,然后在结束时领取。

如果您最初的提案没有成功或变得太具有挑战性,您应该与您的导师一起帮助重新定义它。我们真的希望看到今年夏天每个项目都取得成功,因为用户社区对这些项目非常感兴趣。

学生可以在Google Summer of Code website处申请该计划。请考虑查看我们的SoC 2010 Template并回答其中的问题,作为您申请的一部分。

项目想法

将机器学习应用于图像分割问题

术语“图像分割”描述了对图像中的对象进行概述的任务,以便每个像素都连接到命名对象或背景。

传统上,分割是一个非常困难的问题,尤其是在存在可变照明、噪声或低对比度的情况下。

斐济已实施了许多分割算法来执行图像分割,例如 Auto ThresholdAuto Local Threshold,但在实践中,它们都可能不起作用,因为它们是针对特定图像而设计的,并且您的图像可能无法满足这些期望。

最近,出现了一类新的分割算法:实例分割。这些算法需要一组示例,从中计算出一个模型,该模型可以应用于其他外观相似的图像。

我们将考虑尽可能通用的实现应用程序(即它们适用于任何图像),或者尝试解决非常具体的问题(例如在使用电子显微镜或共焦成像成像的连续切片中分割神经元)。

我们有几个图像数据集及其相应的手动分割(用于训练算法)。参见示例:

欢迎您使用您选择的任何与科学相关的数据集,但我们将优先考虑面向生物学的数据集。

目标:实现多种基于机器学习的分割算法。
语言: Java。
导师: Johannes Schindelin (johannes.schindelin AT gmx.de) 或 Albert Cardona (acardona AT ini phys ethz ch)

添加 JMathLib(MATLAB 克隆)支持

有相当多的算法可用作概念验证 MATLAB 脚本。虽然它是wrong to think of pixels as little squares,并且实际上所有执行图像处理的MATLAB脚本都存在这个缺点,但如果能够运行这些脚本而不必为此目的购买MATLAB许可证,那就太好了。

令人高兴的是,有一个用 Java 编写的 MATLAB 克隆:JMathLib。虽然它显然不是速度恶魔,但将 JMathLib 作为新的脚本语言添加到 ImageJ 并将其集成到 Fiji 中应该很有用,以便 MATLAB 脚本也可以像所有其他 ImageJ 脚本一样执行。 该项目将包括

  • 获取尽可能多的用于图像处理的 .m 脚本,

  • 将 JMathLib 作为脚本语言集成到斐济(使用 Jython、JRuby、Clojure、Javascript 和 BeanShell 共享的基础设施) - 我建议查看 the JRuby Interpreter 的示例,

  • 调整(或覆盖)JMathLib 的图像工具箱,使其与 ImageJ 无缝集成,

  • 测试(并修复不起作用的部分)尽可能多的 .m 脚本。

目标: 将 JMathLib 集成为一种新的脚本语言。
语言: Java。
导师: Johannes Schindelin (johannes.schindelin AT gmx.de)

向 Fiji Updater 教授多个更新站点并提供升级 Java 运行时的服务

Fiji 更新程序始终在我们的网站上查找包含 Fiji 插件(当前版本和过去版本)的 XML 数据库的静态文件。要将新版本或新插件放在那里(上传到更新程序),您必须是斐济开发人员,对我们服务器上的特定目录具有写入权限。

在某些情况下,有些插件要么过于敏感,要么对于某个应用程序过于具体,或者尚未准备好供公众使用,但仍然有人可能希望以自动更新这些插件的方式安装 Fiji。当然,这些插件必须有一个与斐济官方更新站点不同的位置,以免普通观众自动收到这些插件。

不过,该项目并非没有复杂之处:

  • XML数据库作为文件保存在斐济本地目录中,并且始终在启动时检查时间戳是否比服务器上XML数据库的时间戳新。如果您有多个更新站点,则应以一种方式处理,其中本地 XML 数据库反映元数据的来源,并且对于上传,必须为一个特定上传站点构建临时 XML 数据库。

  • 斐济官方插件之间可能存在冲突,但也可以从辅助站点获得。这必须得到解决(目前还不清楚最好的策略应该是什么:采用斐济官方版本而不是辅助站点?让用户选择?)

  • 对于新站点,您也需要能够 upload plugins 访问该站点。需要有一个非常好的方法来防止混淆,以免插件被上传到错误的站点。

  • 为了确定开发人员是否可以上传新插件(因为有新版本),Fiji 更新程序会扫描完整的插件目录,以及宏、第 3 方库或 Fiji 启动器可能隐藏的其他一些位置。斐济更新程序需要学习而不是来提供这些插件以上传到辅助站点,但仅限于非斐济站点。

  • 我们当前的斐济更新程序不太可能从头开始启动数据库。这必须得到验证,如果还没有代码,则必须实现它。

  • 跨站点依赖关系应该通过在 XML 数据库中提供关于哪些其他站点应该具有最新依赖关系的提示来处理。

此外,更新程序目前无法升级 Java 运行时。它没有理由不提供直接从 Sun Developer Network 下载安装程序、运行安装程序并在上面安装 Java 3D 的功能。

目标: 改进斐济更新程序。
语言: Java。
导师: Johannes Schindelin (johannes.schindelin AT gmx.de)

添加一个“真正的”安装程序

目前,Fiji 是一个便携式应用程序,这意味着您可以在任何地方解压它并从那里运行它。

然而,最好有一个安装程序(类似于IzPack或其他基于Java的安装程序),它只是将Fiji从当前所在位置复制到用户指定的位置,然后添加菜单项、文件类型关联、桌面图标、QuickLaunch快捷方式,也许还可以调整PATH环境变量。

简而言之,基本上提供了安装程序所期望的所有细节。

目标: 为斐济提供合适的安装程序。
语言: Java。
导师: Johannes Schindelin (johannes.schindelin AT gmx.de)

实现 imglib 的算法

新的 imglib 支持独立于维度、存储和数据类型的图像处理。该库已经内置了一些算法,但强烈需要通用地实现更通用的图像处理算法、存储策略和数据类型,例如:

  • 插值(三次、正弦、样条……)
  • 直方图
  • 熵过滤器、平均过滤器、百分位数(最小值、中值、最大值)过滤器…
  • 部分图像加载的内存管理
  • 色彩空间和色彩空间转换
  • 通用导入/导出

目标: 使用 imglib 实现尽可能多的图像处理算法 语言: Java。
导师: Stephan Preibisch (preibisch AT mpi-cbg.de) 或 Johannes Schindelin (johannes.schindelin AT gmx.de)

构建用于分割监督训练的特征提取库

在自然图像上,诸如增强边缘学习[1]或边界全局概率[2]之类的机器学习方法已经证明,通过对手动标记的地面实况进行训练,可以显着改善图像分割。

为了将类似的方法应用于生物图像,需要一个特征提取库来捕获生物结构的巨大变异性。该库应涵盖一系列适用于不同图像模式的功能。

可能的功能包括:局部二进制模式、小波、纹理、gabor 滤波器……

虽然可以根据手动标签选择特定分类任务的重要特征,但如果有一个直观的向导,允许用户通过目视检查数据来定义潜在的参数,那么对于分割插件的可用性将是有益的。提供相应的模糊图像来选择合理的频率。

[1] Piotr Dollar、Zhuowen Tu 和 Serge Belongie,Supervised Learning of Edges and Object Boundaries,CVPR,2006。
[2] Michael Maire、Pablo Arbelaez、Charles Fowlkes 和 Jitendra Malik,Using Contours to Detect and Localize Junctions in Natural Images.,CVPR 2008

将 ITK 方法翻译成斐济语

新的imglib库有助于将ITK routines翻译成斐济语。该项目的主要思想是将§§1§§§中的模拟算法导入到原来的imglib代码中,主要是以下方法:

  • 2D/3D配准。
  • 2D/3D分割。
  • 插值(对于n维图像)。
  • 优化。

目标:将ITK方法移植到斐济。
语言: Java、C++、ITK
导师: Ignacio Arganda-Carreras (iarganda@mit.edu)、Stephan Preibisch (preibisch@mpi-cbg.edu) 或 Johannes Schindelin (johannes.schindelin@gmx.de)

将 µManager 集成到斐济

µManager是ImageJ项目的一部分依赖于平台,它增加了对控制显微镜(焦点、承载物台、滤光片组、物镜轮等)的支持。

该项目需要一些在 Linux、MacOSX 和 Windows 上编译 C++ 代码的知识。我们的想法是制作一个配方,其他人可以使用它来(交叉)编译 µManager 的新版本,把其集成到 Fiji 项目中,以确保流畅的用户体验。为了确保对 Micro-Manager 的支持不会被无意中破坏,您还应该添加回归测试。

目标: 提供一种简单的方法来编译并通过斐济发布微管理器。
语言: Java、C++、shell
导师: 约翰内斯·辛德林 (johannes.schindelin@gmx.de)

通过层次进行形态分类

该项目背后的思想是基于结果表中的形态数据,在包含各个二进制对象的图像或该堆栈上实现的对象进行分类。数据将提交给各种层次分析方法之一并生成树状图。树状表示簇之间的距离由“距离”轴表示,用户应该能够通过“距离”轴上的开始选择簇的数量。,根据距离定义的簇对原始中的对象进行标记。

目标:提供一种使用基于奎分析的交互式标记形式从图像中挖掘数据信息的方法。
语言: Java、Weka库
导师: G. Landini (G.Landini at bham.ac.uk) 和 Johannes Schindelin (johannes.schindelin@gmx.de)

将机器学习评估图像分类问题

该项目的动机是与Drosophila embryogenesis中描述基因表达模式的大规模图像集相关的特定生物学问题。它的灵感来自于Cell Profiler project下开发的软件。

问题的一般模块:给定大量相关图像,利用(并扩展)斐济特征检测功能从图像中提取数字模块,并根据反馈迭代使用它们生成分类器。

特别是,开发一个界面,用户(经验丰富的生物学专家)可以从大量§§7§§§果目</i>电流图像中选择显示相似解剖特征(通过染色突出显示)的图像子集,同时评估机器学习派生分类器在整组图像上的性能。用户应该能够通过两种方式影响机器学习:选择或取消选择训练集以及影响训练中使用预先计算特征的选择。 这种方法已成功用于对静态图像进行分类,并且是一种可用的交互式实现§§5§§§。是的,图像是通过控制注释来描述的,它提供了一种独立验证机器学习结果的独特方式,并且也合并到图像选择过程中(即从更同质的组开始)。 先决条件:

  • 基因表达模式注释 RNA 原位图像的大型数据库,由代表 6000 个基因的约 90,000 个图像组成。
  • 实施特征提取方法in Fiji
  • 斐济实施的机器学习 (Weka)
  • Paper描述了使用多个不变特征的组合在此数据集上无监督机器学习方法的原理
  • 具有生物学动机的候选人,具有出色的编程技能 目标 Implement a user interface for supervised machine learning
    语言 Java
    导师 Pavel Tomancak (tomancak at mpi-cbg.de) and Erwin Frise

    为斐济提供集群支持

    Fiji在台式机上运行良好,但对于某些任务,最好使用集群。 为此,斐济已经支持“无头”模式,即无需运行图形用户界面即可进行操作。但还不够:

  • 必须有一个简单的方法来定义应该对哪组图像或哪组子图像执行什么操作。
  • 货物有各种风格,有很多不同的调度程序。需要一个适用于最常见调度程序的通用调度程序。
  • 用户应该有一个漂亮的用户界面来查看详细信息和最终结果。
  • 为了方便起见,斐济应提供确保安装当前斐济的选项。

目标:添加一个组件来安排流程。
语言: Java。
导师: Pavel Tomancak(tomancak,mpi-cbg.de)和 Johannes Schindelin(johannes.schindelin,gmx.de)

分层可压缩,基于单元的存储仓库

开发存储仓库,能够通过有限的带宽通道快速随机访问大规模图像数据集,例如一个Java客户端,可以任意切片为服务器托管的非常大的卷,而消耗服务器渲染切片,也消耗客户端加载整个卷。

在 3d 中,几何图形必须是一个八叉树,其中每个框都通过例如压缩进行差异压缩。 DCT 或小波。该项目需要将小波和 DCT 新生儿因此而不同。由于目前尚无数据此类的文件格式,定义了此类格式。

该项目应该使用 imglib 库 目标 Implementation and detailed specification of hierarchical compressable cell-based storage format
语言 Java
导师 Stephan Saalfeld (saalfeld at mpi-cbg.de)

单幅图像的运动去模糊

该项目的目标是实现一种最先进的运动去模糊算法,如 Qi Shan 等人在 Siggraph 2008 上发表的论文“单幅图像的高质量去模糊”中所述。该算法能够在没有任何先验知识(如点扩散函数)的情况下近未受干扰的图像。通过使用改进的噪声建模和主动纺振铃伪影来实现收敛。 (运动)去模糊是摄影中的一个主要问题,因此可以吸引大量观众,并且很容易利用显着的微图像来实现潜在的去化。

  • Webpage of Siggraph Paper 目标 Implementation of motion deblurring using algorithms avaible in imglib
    语言 Java
    导师 Stephan Preibisch (preibisch at mpi-cbg.de)

    强大的斑点分割

    在科学中,你经常会遇到感兴趣的圆形结构。这种圆形结构可以是细胞、囊泡、最终细胞或类似形状的物体。虽然椭圆形可能是一个很好的最终成品,但生命的肯定不是。 重要的是要记住,目标是显而易见的,因为它们有时重叠,并且我们仍然希望找到正确的目标。示例:

nucleidapiconfocal

该项目的目的是执行方式分割生物中的凸结构。这可以通过在初始阶段使用简单的模板匹配方法或高斯完成图像,然后在所需的约束下整个输出结构。

目标:提供可在2D、3D和4D下工作的健壮的分割即时算法。
语言: Java
导师: 约翰内斯·辛德林 (johannes.schindelin@gmx.de)

纤维分割

图像生物有时包含纤维状结构,例如细胞膜(在二维中,它们是纤维状的)、有丝分裂的纺锤体或微管。示例(绿色信号):

Mitosis

检测、霍夫变换和构造边缘的组合应该提供这样的结构。

目标:实现线性结构的分割方法。
语言: Java
导师: 约翰内斯·辛德林 (johannes.schindelin@gmx.de)

纹理 纹理

图像洞察并非用户感兴趣的所有都包含背景探索上的物体,反之亦然。有时,无法使用强度来结构,而只能使用不同的分组分配的统计测量的内部像素与外部像素。示例:

tem-clahe-50-256-2.5

a number of texture segmentation algorithms 可以在不同的编程解决问题中看到。

该提案是关于向斐济添加至少一种这样的分割算法。

目标:向斐济添加分割算法,该算法使用从背景中不同的对象(以及平等之间)。
语言: Java
导师: 约翰内斯·辛德林 (johannes.schindelin@gmx.de)

##添加可训练区域合并

我们在斐济实施了统计区域合并算法。将图像分割成不同的区域。

这是通过完成迭代按升序排列的像素排序来排序所有像素邻居的,通过简单的统计测试来测试两个像素所属的两个区域(如果它们尚未位于同一区域)确实不同,因此合并。

可以使用不同的统计测试或参数化测试来相同执行的策略。

该项目就是针对此类测试实现一个训练器,其结果是一个模型,该模型将执行与训练时相同的分割,但也可以实现高货运分割。

目标: 实现一个插件,在用户指定的图像上训练区域合并模型。
语言: Java
导师: 约翰内斯·辛德林 (johannes.schindelin@gmx.de)

其他资源

#其他链接