【问题标题】:Pointers on solving this Image Processing challenge?解决这个图像处理挑战的指针?
【发布时间】:2013-08-03 10:43:33
【问题描述】:

IOI 2013 中的第二个问题指出:

您即将参加艺术史考试,但您一直在付款 比艺术课更关注学校的信息学!你 将需要编写一个程序来为您参加考试。

考试将包括几幅画。每幅画都是其中之一的一个例子 四种不同的样式,编号为 1、2、3 和 4。样式 1 包含 肿瘤现代艺术。风格 2 包含印象派风景。 风格 3 包含表现主义动作画。样式 4 包含 色域绘画。

你的任务是,给定一幅画的数字图像,确定这幅画属于哪种风格。

图像将以 H×W 像素网格的形式给出。的行 图像从上到下编号为 0, ..., (H 1),并且 列从左到右编号为 0、…、W 1。像素是 使用二维数组 R 、 G 和 B 进行描述,它们给出了 图像的每个像素中分别包含红色、绿色和蓝色的数量。 这些数量的范围从 0(没有红色、绿色或蓝色)到 255(最大 红色、绿色或蓝色的数量)。

实施 你应该提交一个文件 即实现函数style(),如下:

int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]);

此函数应确定图像的样式。 参数为

  • H:图像中像素的行数。
  • W:图像中像素的列数。
  • R:大小为 H×W 的二维数组,给出图像每个像素中的红色量。
  • G:大小为 H×W 的二维数组,给出图像每个像素中的绿色量。
  • B:大小为 H×W 的二维数组,给出图像每个像素中的蓝色量。

示例图片在the problem PDF

我确实想要一个现成的程序。一两个提示让我开始会很好,因为我对此一无所知可能会解决。

【问题讨论】:

  • “一两个提示让我开始会很好”但这对其他参与者不公平。
  • 比赛结束。 ioi2013.org
  • Code Golf上也可以试试
  • 提示?但标题要求指点! xkcd.com/138
  • @fire.eagle 我知道这即将到来。

标签: c++ c image


【解决方案1】:

由于您提供的是 RGB 格式的图像数据,请首先在 YUV 中准备相同图像数据的副本。这是必不可少的,因为某些图像特征很容易在 Luma(Y) 和 Chroma(U,V) 图中识别出来。

基于samples provided,以下是每种艺术“风格”的一些显着特征:


Style1 - 肿瘤现代艺术

  • 零颗粒度 - 检查具有均匀 Luma(Y) 的大面积区域
  • 黑色像素在区域边缘(不同色度之间的过渡)。

Style2 - 印象派风景

  • 高颗粒度 - 检查 Luma(Y) 中的高熵 (salt-n-pepper-noise like) 模式。
  • 主要是绿色 - 绿色通道中的高值。
    绿色avg >> 红色avg
    绿色avg >> 蓝色avg

Style3 - 表现主义动作画


Style4 - 色域绘画

  • 零颗粒度 - 检查具有均匀 Luma(Y) 的大面积区域
  • NO 在不同色度之间的过渡处有黑色(或接近黑色)像素。

只要输入图像属于这些类之一,您就可以通过通过实现识别上述特征的函数运行图像数据来进行分类。

基本上可以归结为以下代码流:

  • 图像具有统一的亮度
    • (如果是)图像在色度过渡处有黑色像素
      • (如果是)样式1
      • (如果否)样式4
    • (如果否)图像偏绿
      • (如果是)样式2
      • (如果否)样式3

【讨论】:

  • 采样也很重要,我的意思是如何“量化”给定 RGB 区域的 YUV 参数。这可能很棘手。
  • @user2485710 你是对的。但是由于我们对任何形式的压缩都不感兴趣,所以我们不会对色度进行二次采样。可以使用一个简单的公式,如here 所示。查看这篇带有 C++ code 的简短文章,该文章演示了色度子采样引入的相对差异和视觉伪影。
  • 代码流背后的推理是有缺陷的。表现主义动作画也可以是绿色的。
  • @DanielDaranas 同意。答案只是基于问题陈述中提供的示例图像。 OP 明确要求提示以在合理的短时间内解决对图像进行分类的问题。使用已知“风格”的其他示例图像,可以(并且需要)调整逻辑。
【解决方案2】:

也许您可以使用颜色和形状来做第一种方法......在新塑料现代中,可能只有少数颜色,占据几何区域,就像在色域绘画中一样。

这可能会为您提供一种区分样式 1 和 4 与样式 2 和 3 的方法。

在样式 1 和 4 中,您的大面积区域具有相同的颜色,但在样式 4 中,颜色很少是纯色,而是颜色阴影的笔触。

无论如何,您应该研究每种样式的特点,即通常的颜色和方法,然后尝试让您的函数“看到”它。

【讨论】:

    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 2022-01-16
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多