¿Por qué tarda tanto en guardar un mapa de bits?

Así que tengo una aplicación en Google Glass que toma una foto, luego la convierte a escala de grises y sobrescribe la imagen original en la memoria:

private void rGBProcessing (final String picturePath, Mat image) {
//BitmapFactory Creates Bitmap objects from various sources,
//including files, streams, and byte-arrays
    Bitmap myBitmapPic = BitmapFactory.decodeFile(picturePath);
    image = new Mat(myBitmapPic.getWidth(), myBitmapPic.getHeight(), CvType.CV_8UC4);
    Mat imageTwo = new Mat(myBitmapPic.getWidth(), myBitmapPic.getHeight(), CvType.CV_8UC1);
    Utils.bitmapToMat(myBitmapPic, image);
    Imgproc.cvtColor(image, imageTwo, Imgproc.COLOR_RGBA2GRAY);
    Utils.matToBitmap(imageTwo, myBitmapPic);

    FileOutputStream out = null;
    try {
        out = new FileOutputStream(picturePath);
        myBitmapPic.compress(Bitmap.CompressFormat.PNG, 100, out); 
    // PNG is a lossless format, the compression factor (100) is ignored
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (out != null) {
                out.close();
            }
         } catch (IOException e) {
            e.printStackTrace();
        }
    }

El mapa de bits gris no es completamente visible en la memoria usando Windows Photo Viewer hasta que Google Glass se desconecta de la computadora de depuración y luego se vuelve a enchufar. A veces se puede ver la mitad de la imagen en escala de grises, pero eso es todo. Modifiqué el código para mostrar la imagen en lugar de guardarla en la memoria interna y esto fue rápido y exitoso, lo que me hace pensar que el problema es leer la imagen en escala de grises en la memoria interna:

FileOutputStream out = null;
        try {
            out = new FileOutputStream(picturePath);
            myBitmapPic.compress(Bitmap.CompressFormat.PNG, 100, out); 
        // PNG is a lossless format, the compression factor (100) is ignored
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
             } catch (IOException e) {
                e.printStackTrace();
            }
        }

Cualquier explicación o sugerencia bienvenida. Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta