美文网首页Android
Android NDK开发OpenCV系列:直方图均值化

Android NDK开发OpenCV系列:直方图均值化

作者: itfitness | 来源:发表于2022-03-01 16:21 被阅读0次

    目录

    效果展示

    函数讲解

    这里普通均值化使用的函数我之前的文章有介绍过:
    equalizeHist(直方图均衡化,提升对比度)
    另外一个自适应均值化的函数如下(该函数从效果上看可以保留更多的细节):

    CV_EXPORTS_W Ptr<CLAHE> createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8));
    

    其中参数如下:
    clipLimit :对比度限制的阈值
    tileGridSize :直方图均衡的网格大小,输入图像将被分成大小相等的矩形图块,tileGridSize 定义行和列中的瓦片数

    实现代码

    extern "C"
    JNIEXPORT jobject JNICALL
    Java_com_itfitness_cppdemoone_activity_HistogramAverageActivity_imageHistogramAverage(JNIEnv *env,
                                                                                          jobject thiz,
                                                                                          jobject bitmap_src) {
        //源图像
        Mat src;
        //将Bitmap转换为Mat
        BitmapToMat(env,bitmap_src,src, JNI_FALSE);
    
        cvtColor(src,src,CV_BGR2GRAY);
    
        //直方图均值化
        equalizeHist(src, src);//图像直方图均衡化
    
        //将Mat转换为Bitmap
        MatToBitmap(env,src,bitmap_src, JNI_FALSE);
        //释放Mat
        src.release();
        return bitmap_src;
    }
    extern "C"
    JNIEXPORT jobject JNICALL
    Java_com_itfitness_cppdemoone_activity_HistogramAverageActivity_imageAdaptiveHistogramAverage(
            JNIEnv *env, jobject thiz, jobject bitmap_src) {
        //源图像
        Mat src;
        //将Bitmap转换为Mat
        BitmapToMat(env,bitmap_src,src, JNI_FALSE);
    
        cvtColor(src,src,CV_BGR2GRAY);
    
        //自适应直方图均值化
        Ptr<CLAHE> ptr = createCLAHE(2.0,Size(8,8));
        ptr->apply(src,src);
    
        //将Mat转换为Bitmap
        MatToBitmap(env,src,bitmap_src, JNI_FALSE);
        //释放Mat
        src.release();
        return bitmap_src;
    }
    

    案例源码

    https://gitee.com/itfitness/opencv-demo

    相关文章

      网友评论

        本文标题:Android NDK开发OpenCV系列:直方图均值化

        本文链接:https://www.haomeiwen.com/subject/xlzdrrtx.html