Есть ли алгоритмы для увеличения разрешения изображения? [закрытый]

Мы можем использовать %in% - filter строки после группировки по 'sentId` и' partner. '

library(dplyr)
df1 %>%
  group_by(sentId., partner.) %>%
  filter(3 %in% label.)
# A tibble: 3 x 5
# Groups:   sentId. [2]
#  sentId.    B. label. partner.  code
#    <dbl> <dbl>  <dbl>    <dbl> <int>
#1       1     2      3        4   123
#2       1     2      2        4   124
#3       4     2      3        8   125

Или в компактном виде с data.table [1110 ]

library(data.table)
setDT(df1)[, .SD[3 %in% label.], .(sentId., partner.)]
<час>

Или с base R

df1[with(df1, ave(label.==3, sentId., partner., FUN = any)),]

данными

df1 <- structure(list(sentId. = c(1, 1, 4, 7), B. = c(2, 2, 2, 3), label. = c(3, 
 2, 3, 2), partner. = c(4, 4, 8, 7), code = 123:126),
 class = "data.frame", row.names = c(NA, 
 -4L))
5
задан Juha Syrjälä 8 May 2010 в 10:12
поделиться

7 ответов

4
ответ дан 18 December 2019 в 10:49
поделиться

Поскольку фактические алгоритмы проверяют интерполяцию изображения.

Простой ответ на Ваш вопрос, "Да там алгоритмы, но ни один из них не очень хорош". Как Вы упомянули в вопросе, ограничивающим фактором является потребность изобрести пиксели для увеличения разрешения вне небольшого количества. (Вот почему Вы не можете действительно считать номерной знак из отражения в чьих-то стеклах прочь фотографии, сделанной от камеры видеонаблюдения CCTV, как они делают в CSI: Майами.)

Если все, что Вы хотите сделать, создают увеличенное изображение (для настенного ковра, или такой как) затем, можно использовать плагин для Photoshop, который будет сглаживать переходы между пикселями с помощью существующей информации. Это не может создать новые пиксели, но это может избавиться от который квадратный, пикселизированный взгляд.

3
ответ дан 18 December 2019 в 10:49
поделиться

Приложение к предыдущим ответам: Обратите внимание на то, что ответ на Ваш вопрос зависит в большой степени от того, что точно Вы подразумеваете под разрешением - дисплея устройства захвата изображения, или устройства просмотра (т.е. человеческий глаз.) Я предполагаю, что Вы говорите о растровых изображениях (проблема не существовала бы для векторных изображений.)

Необходимо признать, что снимок, сделанный в более высоком разрешении, будет содержать больше данных изображения (т.е. детали), чем изображение той же сцены, взятой в более низком разрешении. Нет никакого способа добавить эту информацию из ничего. Масштабирующиеся алгоритмы синтезируют некоторую информацию, основанную на предположении о непрерывности между дискретными элементами растрового изображения. Та "новая" информация не является на самом деле новой, но не получена из существующей ранее информации об изображении, следовательно это, как могут полагать, не имеет 100%-ю вероятность соответствия исходной сцене. Лучшие алгоритмы могли бы привести к лучшим вероятностям, но их результаты будут всегда иметь вероятность соответствия меньше чем 1.

3
ответ дан 18 December 2019 в 10:49
поделиться

Можно попытаться векторизовать изображение с инструментами как автотрассировка или potrace и использовать его в любом разрешении, которое Вы любите. Но это является в вычислительном отношении очень дорогостоящим, таким образом, Вы заканчиваете с изображением с немногими цветами/функциями и даже меньше, если необходимо работать над его целым быстро.

1
ответ дан 18 December 2019 в 10:49
поделиться

Увеличение изображений опасно. После определенного предела увеличение отображает, поручение дурака; Вы не можете волшебно синтезировать бесконечное число новых пикселей из ничего. И интерполированные пиксели никогда не так хороши как реальные пиксели. Вот почему это - больше, чем немного искусственный для увеличения 512x512 изображение Lena на 500%. Было бы более умно найти более высокое сканирование разрешения или изображение того, в чем Вы нуждаетесь*, чем это должно было бы увеличить его в программном обеспечении.

От Jeff Atwood

2
ответ дан 18 December 2019 в 10:49
поделиться

Большинство достойных редакторов изображений имеет фильтры сглаживания/интерполяции, чтобы сделать этот вид изменения размеров/передискретизации, например, IrfanView, который дает Вам несколько опций для фильтров интерполяции. См., что Lanczos передискретизирует. Программа преобразования ImageMagick позволяет Вам делать это также после определения фильтра

0
ответ дан 18 December 2019 в 10:49
поделиться

Если необходимо сделать это алгоритмически, проверьте Изображение, Масштабирующее ссылку, предложенную Draemon. На какой платформе Вы будете делать эти интерполяции? Большинство графических библиотек будет иметь множество подходов реализованным, позволяя Вам сбалансировать скорость относительно качества.

Если просто необходимо изменить размер некоторых изображений, я рекомендую GIMP. Это может изменить размер изображений во множестве путей, по крайней мере один из которых должен привести к превосходным результатам в любой ситуации.

Как другие указывают, Вы не можете ожидать, что метод масштабирования изобретет информацию, которая не находится в исходном изображении. Таким образом, Вы не можете ожидать, что это будет похоже на моменты в CSI, где они "масштабируют и улучшают" для наблюдения числа на номерном знаке, который был безнадежно размыт в исходном изображении.

0
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: