Как уменьшить размер изображения с помощью билинейной фильтрации в Swift / iOS? - PullRequest
0 голосов
/ 03 сентября 2018

Мне нужно изменить размер изображения с помощью билинейной фильтрации, но я не уверен, как это можно сделать в Swift. В Python PIL, а также Opencv позволяет нам выбирать метод интерполяции при изменении размера (https://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.imresize.html). Я надеялся имитировать процесс в iOS для модели coreML

Я искал методы изменения размера, но это то, что я смог найти в блоге:

extension UIImage {
    func resizeUI(size:CGSize) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(size, true, self.scale)
        self.drawInRect(CGRect(origin: CGPointZero, size: size))

        let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return resizedImage
   }

Однако, похоже, вы не можете выбирать методы интерполяции.

Спасибо.

EDIT:

Я нашел imageBySamplingLinear, но этот метод не позволяет изменить размер изображения с помощью метода интерполяции. Он просто берет изображение текущего размера и интерполирует его?

https://developer.apple.com/documentation/coreimage/ciimage/2867346-imagebysamplinglinear?language=objc

В то время как реальный алгоритм изменяет размер изображения, используя интерполяцию:

https://rosettacode.org/wiki/Bilinear_interpolation#Python

...