Заполнение изображения с помощью пакета magick - PullRequest
0 голосов
/ 05 мая 2019

Это изображение должно быть заполнено, используя меньшие изображения:

enter image description here

library(sp)
library(raster)
library(imager)


im <- load.image("white_rectangle.jpg") 
px <- im > 0.4 #Select pixels of the circle (i.e., those with high luminance)
coord <- where(px)

boundaries <- imager::boundary(px)
boundaries.xy <- where(boundaries)

x_coord <- boundaries.xy$x
y_coord <- boundaries.xy$y
xym <- cbind(x_coord, y_coord)

p = Polygon(xym)
ps = Polygons(list(p),1)
sps1 = SpatialPolygons(list(ps))
plot(sps1)

Я пытаюсь использовать пакет magick для заполнения предыдущего изображения,

Одна из идей о том, как ее решить, была попытка заполнить его кубом изображений, подобным матрице 3х3.

bigdata <- 
image_read('https://jeroen.github.io/images/bigdata.jpg')
frink <- image_read("https://jeroen.github.io/images/frink.png")
logo <- image_read("https://jeroen.github.io/images/Rlogo.png")
img <- c(bigdata, logo, frink)
img <- image_scale(img, "300x300")
image_info(img)

new_i <- image_append(image_scale(img, "x200"))

Мой текущий код возвращает вектор из 3, я не понимаю, как создать матрицу из 3 x 3 изображений:

  image_append(new_i,new_i,new_i stack = TRUE)

Спасибо за ваше руководство.

1 Ответ

1 голос
/ 06 мая 2019

Я не уверен, насколько велики ваши входные изображения и как вы хотите, чтобы они были заполнены. Но если вы хотите, чтобы они просто добавлялись бок о бок, то в командной строке Imagemagick я бы сделал:

Ввод (повторяется 3 раза):

enter image description here

Ваше изображение должно быть заполнено 630x380 после вычитания границы. Я получаю это к

convert img.jpg -fuzz 15% -format "%@" info:
630x380+10+10


Таким образом добавляем и добавляем в ваше изображение:

convert img.jpg \( monet2.jpg monet2.jpg monet2.jpg +append -resize 630x380^ -gravity center -extent 630x380 \) -gravity center -compose over -composite result.jpg

enter image description here

Это то, что вы пытаетесь сделать?

Если вам нужна сетка изображений 3х3, то отрегулируйте (измените размер и / или обрежьте) 3 изображения так, чтобы они составляли 1/3 вашего фонового изображения в каждом измерении. Добавьте 3 по горизонтали. Дублируем это еще 2 раза и добавляем этот набор из 3 по вертикали. Затем вставьте в фоновое изображение.

convert img.jpg \( \( monet2.jpg monet2.jpg monet2.jpg -resize 210x127^ -gravity center -extent 210x127 +append \) -duplicate 2 -append \) -gravity center -compose over -composite result1.jpg


enter image description here

Сложение:

Другой подход - просто выложить изображение.

convert img.jpg -resize 210x127^ -gravity center -extent 210x127 -write mpr:img +delete -size 630x380 tile:mpr:img result2.png


enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...