Giter Site home page Giter Site logo

jhfmat / isp-pipeline-hdrplus Goto Github PK

View Code? Open in Web Editor NEW
733.0 6.0 192.0 16.5 MB

Denoise,HDR,Isppipeline,Image-processing(图形处理),camera, Isp ,HDRplus

Makefile 0.11% Batchfile 0.03% C++ 41.26% C 58.60%
isp hdrplus image-processing camera-pipeline image-signal-processor denoise-images hdr-image isppipeline denoise

isp-pipeline-hdrplus's Introduction

QQ技术讨论资料群236898700

详解v1.0 v3.0 测试使用以及各个模块详细教程qq [email protected]

《编译测试教程链接》

链接:https://pan.baidu.com/s/19nbjRKWprGrEFpVKtpzsXg 提取码:aaaa

Mat

1,Introduce

debug ref

Matlib Is an open source (C / C + +) image algorithm library, It can be used under multiple platforms(Window, Linux, Android), It contains all kinds of conventional image processing algorithms, all functions adopt the underlying optimization technology, include (Neon, Openmp, Linebuf, Mempool, and so on) ,Its performance is faster than OpenCV, The code is only 1M, which is very simplified and has no dependency,It is very convenient to use, We can use the neon instruction on the window platform, Development and use is very friendly, which can quickly integrate developers into their own code.

2,Frame structure

framestucture

Here we briefly describe the core class of mat basic image library (parent class mat.h file) Subclasses contain (MultIntImage, MultiShortImage, MultiUcharImage, MultiUshortImage, SingleUcharImage, Yuv420Image), They contain various basic image processing algorithms, We can use them to process images such as RAW RGB GRAY YUV. For detailed code usage, please refer to the example file.

3,How to compile a project

  • Window platform: We can use vs2017 to compile(open ISPpipeline.sln)
  • Linux platform: We can use g++ to compile(待更新)
  • Android platform: We can use ndk to compile(待更新)

---------------------------V2.0-----------------------------

3,Example for surperlowlight(wait for..)

注意事项本算法要求是多帧ev0和多帧ev-x(详细参考demo教材)

提取码:aaaa

标定工具下载:待更新xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

提取码:aaaa

基于mat surperlowlight 框架图

ISPpipeline.png

1,常规配置

comom_param.png

效果图如图:

common_isp.png

2,surperlowlight效果配置

superlowlight_param.png

效果图如图:

superlowlight_isp.png

3,细节对比

detailcompare.png

---------------------------V1.0-----------------------------

注意事项本算法要求是多帧短曝光raw

提取码:aaaa

####(DecedeCR2.exe文件将.CR2文件解码到.raw文件和生成相关的参数文件.txt,ISPpipeline.exe是一套isp将raw处理到bmp流程) run23detail.png

基于mat hdrplus 框架图

ISPpipeline.png

1,打开网络参数文件

weight.param.png

2,关闭isp种核心三个模块

  • nBlockMatchFusionEnable=0; ValueRange=[0,1,1] 多帧去噪
  • nChromaDenoiseEnable=0; ValueRange=[0,1,1] 去除彩色噪声
  • nTonemappingEnable=0; ValueRange=[0,1,1] 动态范围压缩

如图:

sampleweight.png

3,运行run23.bat

run23.png

Outbmp目录下生成Normalize.bmp如图:

basicispss.png

4,打开网络模块开启上述三个模块如图:

fullweight.png

删除outbmp/Normalize.bmp 再次运行run23.bat

outbmp目录下生成Normalize.bmp图如下:

myispss.png

5,下载hdrplus里面的demo测试结果图项目链接

hdrplusziplianjie.png hdrpluszip.png

6,解压001压缩包找到里面output23.png

hdrplusdemooutdir.png

hdrplus测试结果图

hdrplusout23ss.png

7,三张图整体对比

fullcompare.png

8,三张细节对比

detailcompare.png

isp-pipeline-hdrplus's People

Contributors

jhfmat avatar liguoer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

isp-pipeline-hdrplus's Issues

Invalid demo data

The link to the test data is expired. Could you please offer a new one?

DecodeCR2 issues:terminate called after throwing an instance of 'std::out_of_range' , compile and run on ubuntu18.04

Hello @jhfmat ,i compile the DecodeCR2.cpp, and i want to convert *.CR2 file to *.raw file and generate the meta text, i have succesfully compiled the sorce code, but when i run the command: "./Decodecr2 ../imgs/burst22_0.CR2 ../imgs/1.raw ../imgs/1.txt ", i get the error:
terminate called after throwing an instance of 'std::out_of_range'
what(): _Map_base::at
Aborted (core dumped)

following is the output of terminal:

raw_width, raw_height==9305 9304
left, top==9309 9308
0.000000
0.000000
0.000000
wb rgb gain(-nan,1.000000,-nan)
[0.000000,0.000000,0.000000,
[0.000000,0.000000,0.000000,
[0.000000,0.000000,0.000000,
ae sensorSensitivity(iso): 0
exposure(ns): 0
BLC: 0
terminate called after throwing an instance of 'std::out_of_range'
what(): _Map_base::at
Aborted (core dumped)

The second issue: the demo images can not been download, because of the number of link visitors reaches the line, could you reply a new demo images download link? thank you very much!

没有降噪模块?

你好!最近在看HDR相关降噪的,但是好像没见到您在程序种有相关降噪的代码!看您样例中降噪效果挺好的,望从您这里得到一定的思路,不一定要代码,论文就好!

How to integrate this algo to Android platfrom?

Hi sir,
I want to integrate the HDR algo to my Camera App on the Android,but I dnot know how to complie this project and what parameters needed? how to use the configure file ?
I trying to run ndk-build command at folder:
ISP-pipeline-hdrplus/Mat/Android/jni$ ls Android.mk Application.mk build.cmd
ISP-pipeline-hdrplus/Mat/Android/jni$ ndk-build

but there are many error:

/home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/Android.mk:19: "TARGET_ARCH_ABI = arm64-v8a" [arm64-v8a] Compile++ : Mat <= MathFunction.cpp [arm64-v8a] Compile++ : Mat <= Common.cpp In file included from /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:1: In file included from /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.h:4: /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:268:11: error: called object type 'float' is not a function or function pointer tmp = min(R, G); ~~~^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:269:11: error: called object type 'float' is not a function or function pointer min = min(tmp, B); ~~~^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:270:11: error: called object type 'float' is not a function or function pointer tmp = max(R, G); ~~~^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:271:11: error: called object type 'float' is not a function or function pointer max = max(tmp, B); ~~~^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2619:43: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][0] + pIn[6][0])*k[0] + (pIn[1][0] + pIn[5][0]) *k[1] + (pIn[2][0] + pIn[4][0]) *k[2] + pIn[3][0] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2619:75: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][0] + pIn[6][0])*k[0] + (pIn[1][0] + pIn[5][0]) *k[1] + (pIn[2][0] + pIn[4][0]) *k[2] + pIn[3][0] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2619:107: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][0] + pIn[6][0])*k[0] + (pIn[1][0] + pIn[5][0]) *k[1] + (pIn[2][0] + pIn[4][0]) *k[2] + pIn[3][0] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2619:126: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][0] + pIn[6][0])*k[0] + (pIn[1][0] + pIn[5][0]) *k[1] + (pIn[2][0] + pIn[4][0]) *k[2] + pIn[3][0] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2620:43: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][1] + pIn[6][1])*k[0] + (pIn[1][1] + pIn[5][1]) *k[1] + (pIn[2][1] + pIn[4][1]) *k[2] + pIn[3][1] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2620:75: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][1] + pIn[6][1])*k[0] + (pIn[1][1] + pIn[5][1]) *k[1] + (pIn[2][1] + pIn[4][1]) *k[2] + pIn[3][1] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2620:107: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][1] + pIn[6][1])*k[0] + (pIn[1][1] + pIn[5][1]) *k[1] + (pIn[2][1] + pIn[4][1]) *k[2] + pIn[3][1] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2620:126: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][1] + pIn[6][1])*k[0] + (pIn[1][1] + pIn[5][1]) *k[1] + (pIn[2][1] + pIn[4][1]) *k[2] + pIn[3][1] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2621:43: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][2] + pIn[6][2])*k[0] + (pIn[1][2] + pIn[5][2]) *k[1] + (pIn[2][2] + pIn[4][2]) *k[2] + pIn[3][2] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2621:75: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][2] + pIn[6][2])*k[0] + (pIn[1][2] + pIn[5][2]) *k[1] + (pIn[2][2] + pIn[4][2]) *k[2] + pIn[3][2] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2621:107: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][2] + pIn[6][2])*k[0] + (pIn[1][2] + pIn[5][2]) *k[1] + (pIn[2][2] + pIn[4][2]) *k[2] + pIn[3][2] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2621:126: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][2] + pIn[6][2])*k[0] + (pIn[1][2] + pIn[5][2]) *k[1] + (pIn[2][2] + pIn[4][2]) *k[2] + pIn[3][2] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2622:43: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][3] + pIn[6][3])*k[0] + (pIn[1][3] + pIn[5][3]) *k[1] + (pIn[2][3] + pIn[4][3]) *k[2] + pIn[3][3] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2622:75: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][3] + pIn[6][3])*k[0] + (pIn[1][3] + pIn[5][3]) *k[1] + (pIn[2][3] + pIn[4][3]) *k[2] + pIn[3][3] * k[3]; ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Common.cpp:2622:107: error: use of undeclared identifier 'k' *(pOutLine++) = (pIn[0][3] + pIn[6][3])*k[0] + (pIn[1][3] + pIn[5][3]) *k[1] + (pIn[2][3] + pIn[4][3]) *k[2] + pIn[3][3] * k[3]; ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. make: *** [/home/fup/dsoft/sdk/ndk/21.4.7075529/build/core/build-binary.mk:478: /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/obj/local/arm64-v8a/objs/Mat/__/__/__/Mat/Common.o] Error 1 make: *** Waiting for unfinished jobs.... [arm64-v8a] Compile++ : Mat <= MultiUcharImage.cpp In file included from /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/MultiUcharImage.cpp:1: In file included from /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/MultiUcharImage.h:3: In file included from /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Mat.h:3: /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:268:11: error: called object type 'float' is not a function or function pointer tmp = min(R, G); ~~~^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:269:11: error: called object type 'float' is not a function or function pointer min = min(tmp, B); ~~~^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:270:11: error: called object type 'float' is not a function or function pointer tmp = max(R, G); ~~~^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:271:11: error: called object type 'float' is not a function or function pointer max = max(tmp, B); ~~~^ In file included from /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/MultiUcharImage.cpp:1: In file included from /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/MultiUcharImage.h:3: /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Mat.h:683:18: error: declaration of 'T' shadows template parameter template <class T> ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Mat.h:680:17: note: template parameter is declared here template <class T> ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Mat.h:686:19: error: declaration of 'T' shadows template parameter template <class T> ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/Mat.h:683:18: note: template parameter is declared here template <class T> ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/MultiUcharImage.cpp:155:4: error: no matching function for call to 'RGBToHSVf' RGBToHSVf((float)RGB[0], (float)RGB[1], (float)RGB[2], (float)tmpHSV[0], (float)tmpHSV[1], (float)tmpHSV[2]); ^~~~~~~~~ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:262:13: note: candidate function not viable: expects an l-value for 4th argument inline void RGBToHSVf(float R, float G, float B, float& H, float& S, float&V) ^ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/MultiUcharImage.cpp:186:4: error: no matching function for call to 'RGBToHSVf' RGBToHSVf((float)RGB[0], (float)RGB[1], (float)RGB[2], (float)tmpHSV[0], (float)tmpHSV[1], (float)tmpHSV[2]); ^~~~~~~~~ /home/fup/data/workspace/ISP-pipeline-hdrplus/Mat/Android/jni/../../../Mat/SubFunction.h:262:13: note: candidate function not viable: expects an l-value for 4th argument inline void RGBToHSVf(float R, float G, float B, float& H, float& S, float&V)

Can you help me?
Thanks.

不能正常解析raw文件

你好,
图像raw数据使用云盘文件夹surperlowlight/demo下,weight.param使用工程data目录下的。在vs编译运行后,发现解析raw失败。截图如下
image

"Any documents for ISP algo"

Hello,
I am very interesting for your isp jobs. And I have two question to request for your help. 1) For Isp pipe surperlowlight,there are mudules like raw denoise\len shading,but I can not find those implement in code. 2) whether there are isp algo documents for isp pipeline. Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.