0

iOSをターゲットとするObjectiveCでアンシャープマスクフィルターを作成する最も効率的な方法は何でしょうか?ImageMagickのようなオープンソースを実装するか、ゼロから構築するのが最善でしょうか。

基本的な計算式はおおむね次のように思います(正しくわからない場合はコメントしてください)。

  1. オリジナルを複製
  2. ぼかしの複製(ガウス)
  3. 「違い」を介してオリジナルとブレンド
  4. 結果を使用してオリジナルをマスクする
  5. オリジナルのマスクされていない領域のコントラストを上げます。
4

2 に答える 2

1

Core ImageにはCIUnsharpMaskフィルターが組み込まれていますが、iOSで利用できるかどうかはまだわかりません。Brad LarsonのGPUImageフレームワークには、アンシャープマスクフィルターもあります。

どちらの方法も、ImageMagickをクロスコンパイルしたり、独自に作成したりするよりも、非常に高速で、実装がはるかに簡単である必要があります。

于 2012-06-04T22:51:06.697 に答える
1
(UIImage *)useOfUnsharpMask:(CIImage *)beginImage 
{

    float sliderValue = sharpnessSlider.value;
    CIFilter *filter = [CIFilter filterWithName:@"CIUnsharpMask" keysAndValues:kCIInputImageKey,beginImage,@"inputIntensity",[NSNumber numberWithFloat:sliderValue],@"inputRadius",@2.50, nil];
    CIContext *context = [CIContext contextWithOptions:nil];

    CIImage *outputImage = [filter valueForKey: @"outputImage"];
    UIImage *finalImage = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:outputImage.extent]];

    return finalImage;
}

お役に立てば幸いです:)

于 2014-05-14T11:19:58.107 に答える