Come posso rilevare la differenza tra 2 immagini, creando una maschera dell'area diversa per elaborare l'area che è comune ad entrambe le immagini (sfocatura gaussiana per esempio)?Creare una maschera dalla differenza tra due immagini (iPhone)
EDIT: Attualmente sto usando questo codice per ottenere il valore RGBA di pixel:
+ (NSArray*)getRGBAsFromImage:(UIImage*)image atX:(int)xx andY:(int)yy count:(int)count
{
NSMutableArray *result = [NSMutableArray arrayWithCapacity:count];
// First get the image into your data buffer
CGImageRef imageRef = [image CGImage];
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = malloc(height * width * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
CGContextRelease(context);
// Now your rawData contains the image data in the RGBA8888 pixel format.
int byteIndex = (bytesPerRow * yy) + xx * bytesPerPixel;
for (int ii = 0 ; ii < count ; ++ii)
{
CGFloat red = (rawData[byteIndex] * 1.0)/255.0;
CGFloat green = (rawData[byteIndex + 1] * 1.0)/255.0;
CGFloat blue = (rawData[byteIndex + 2] * 1.0)/255.0;
CGFloat alpha = (rawData[byteIndex + 3] * 1.0)/255.0;
byteIndex += 4;
UIColor *acolor = [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
[result addObject:acolor];
}
free(rawData);
return result;
}
Il problema è che le immagini vengono catturate dalla fotocamera di iPhone in modo da non sono esattamente nella stessa posizione. Devo creare aree di un paio di pixel ed estrarre il colore generale dell'area (magari sommando i valori RGBA e dividendo per il numero di pixel?). Come potrei farlo e poi tradurlo in un CGMask?
So che questa è una domanda complessa, quindi qualsiasi aiuto è apprezzato.
Grazie.
Ciao Cory, il codice è molto utile, è riuscito a produrre gli elementi che non sono presenti in nessuna delle due foto. Tuttavia, sembra anche produrre uno sfondo nero, a differenza di uno sfondo trasparente. C'è un modo per rimuovere lo sfondo nero? – wahkiz