iOSをターゲットとするObjectiveCでアンシャープマスクフィルターを作成する最も効率的な方法は何でしょうか?ImageMagickのようなオープンソースを実装するか、ゼロから構築するのが最善でしょうか。
基本的な計算式はおおむね次のように思います(正しくわからない場合はコメントしてください)。
- オリジナルを複製
- ぼかしの複製(ガウス)
- 「違い」を介してオリジナルとブレンド
- 結果を使用してオリジナルをマスクする
- オリジナルのマスクされていない領域のコントラストを上げます。
iOSをターゲットとするObjectiveCでアンシャープマスクフィルターを作成する最も効率的な方法は何でしょうか?ImageMagickのようなオープンソースを実装するか、ゼロから構築するのが最善でしょうか。
基本的な計算式はおおむね次のように思います(正しくわからない場合はコメントしてください)。
Core ImageにはCIUnsharpMaskフィルターが組み込まれていますが、iOSで利用できるかどうかはまだわかりません。Brad LarsonのGPUImageフレームワークには、アンシャープマスクフィルターもあります。
どちらの方法も、ImageMagickをクロスコンパイルしたり、独自に作成したりするよりも、非常に高速で、実装がはるかに簡単である必要があります。
(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;
}
お役に立てば幸いです:)