小编Rug*_*ger的帖子

在SIMD中矢量化直方图的方法?

我正在尝试在霓虹灯中实现直方图.矢量化是否可能?

arm image-processing simd histogram neon

14
推荐指数
2
解决办法
2910
查看次数

iOS6:如何使用YUV到RGB的转换功能从cvPixelBufferref到CIImage

从iOS6开始,Apple通过此调用提供了使用原生YUV到CIImage的规定

initWithCVPixelBuffer:选项:

在核心图像编程指南中,他们提到了这个功能

利用iOS 6.0及更高版本中对YUV图像的支持.相机像素缓冲器本身是YUV,但大多数图像处理算法都需要RBGA数据.在两者之间进行转换需要付出代价.Core Image支持从CVPixelBuffer对象读取YUB并应用适当的颜色转换.

options = @ {(id)kCVPixelBufferPixelFormatTypeKey:@(kCVPixelFormatType_420YpCvCr88iPlanarFullRange)};

但是,我无法正常使用它.我有一个原始的YUV数据.所以,这就是我所做的

                void *YUV[3] = {data[0], data[1], data[2]};
                size_t planeWidth[3] = {width, width/2, width/2};
                size_t planeHeight[3] = {height, height/2, height/2};
                size_t planeBytesPerRow[3] = {stride, stride/2, stride/2};
                CVPixelBufferRef pixelBuffer = NULL;
                CVReturn ret = CVPixelBufferCreateWithPlanarBytes(kCFAllocatorDefault,
                               width, 
                               height,
                               kCVPixelFormatType_420YpCbCr8PlanarFullRange, 
                               nil,
                               width*height*1.5,
                               3, 
                               YUV,
                               planeWidth,
                               planeHeight, 
                               planeBytesPerRow, 
                               nil,
                               nil, nil, &pixelBuffer); 

    NSDict *opt =  @{ (id)kCVPixelBufferPixelFormatTypeKey :
                        @(kCVPixelFormatType_420YpCbCr8PlanarFullRange) };

CIImage *image = [[CIImage alloc]   initWithCVPixelBuffer:pixelBuffer options:opt];
Run Code Online (Sandbox Code Playgroud)

我的形象是零.我不知道我错过了什么.

编辑: 我在通话前添加了锁定和解锁基地址.另外,我转储了pixelbuffer的数据,以确保pixellbuffer能够正确保存数据.它看起来只是init调用的错误.仍然CIImage对象返回nil.

 CVPixelBufferLockBaseAddress(pixelBuffer, 0);
CIImage *image = …
Run Code Online (Sandbox Code Playgroud)

objective-c core-image ios ios6

8
推荐指数
1
解决办法
4995
查看次数

使用PLD指令

我对ARM cortex A8中PLD指令的使用有一些疑问.因为我在循环中使用指令,所以存在超出内存访问的可能性.我怀疑的是,这是否会导致分段错误.我在ARM手册中读到了这一点

由于PLD指令被所有级别的高速缓存处理为任何其他加载指令,因此PLD指令遵循标准数据依赖性规则和逐出过程.在PLD执行的任何阶段,在地址转换故障,高速缓存命中或中止的情况下,PLD指令被忽略.

因此,如果进行了超出范围的内存访问,则忽略相应的PLD指令或不是我的疑问.

arm cortex-a8 cpu-cache mmu

5
推荐指数
1
解决办法
830
查看次数

运行长度编码 - SIMD

我正在尝试优化运行长度编码.我在考虑在SIMD中实现它.我花了几个小时在算法上工作,但不能继续下去.是否值得一试?我在做霓虹灯.

谢谢.

jpeg arm simd run-length-encoding neon

2
推荐指数
1
解决办法
1549
查看次数