Change depth data type to float
authorTae-Young Chung <ty83.chung@samsung.com>
Fri, 14 Jan 2022 06:47:48 +0000 (15:47 +0900)
committer엘무럿/선행S/W Lab(생활가전)/Principal Engineer/삼성전자 <e.talipov@samsung.com>
Thu, 27 Jan 2022 06:43:43 +0000 (15:43 +0900)
[Version] 1.0.1
[Issue type] update

Signed-off-by: Tae-Young Chung <ty83.chung@samsung.com>
packaging/dfs-opencv.spec
src/dfs_opencv.cpp

index 3019163364d6348bdb493baa44bfd6d5b5510fe5..effcd3e4193d618c7bb963becba596def3377c4a 100644 (file)
@@ -1,6 +1,6 @@
 Name:       dfs-opencv
 Summary:    OpenCV based Depth-from-Stereo implementation
-Version:    1.0.0
+Version:    1.0.1
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 92f628fd7543446a9e40885c13849af0c1f29224..896cc52844e79e72bf0e63c7342a8b8d7f11182e 100644 (file)
@@ -178,7 +178,9 @@ namespace DfsAdaptationImpl
                mDfsParam = param;
                mImageSize = cv::Size(width, height);
                mMinDisparity = minDisp;
-               mNumDisparities = maxDisp - minDisp + 1;
+               mNumDisparities = static_cast<int>(static_cast<float>(maxDisp - minDisp+1)/16.f);
+               mNumDisparities *= 16;
+               LOGE("mMinDisparity: %zd, mNumDisparities: %zd", mMinDisparity, mNumDisparities);
                if (mDownScale) {
                        mMinDisparity >>= mDownScale;
                        mNumDisparities >>= mDownScale;
@@ -240,7 +242,7 @@ namespace DfsAdaptationImpl
 
        int DfsOCV::ConvertDfsDataTypeToCV(int type)
        {
-               LOGI("LEAVE");
+               LOGI("ENTER");
                switch (type) {
                case DFS_DATA_TYPE_UINT8C1:
                        return CV_8UC1;
@@ -252,7 +254,7 @@ namespace DfsAdaptationImpl
 
                return -1;
 
-               LOGI("ENTER");
+               LOGI("LEAVE");
        }
 
        bool DfsOCV::computeL(const cv::Mat& baseMat, const cv::Mat& extraMat, cv::Mat& disp)
@@ -354,6 +356,7 @@ namespace DfsAdaptationImpl
                        baseCvType = ConvertDfsDataTypeToCV(base.type);
                        extraCvType = ConvertDfsDataTypeToCV(extra.type);
                        if (baseCvType < 0 || extraCvType < 0) {
+                               LOGE("baseCvType: %d, extraCvType:%d", baseCvType, extraCvType);
                                throw std::runtime_error("invalid data type");
                        }
 
@@ -441,7 +444,7 @@ namespace DfsAdaptationImpl
                                }
                                mDfsPostOcv->filter(dispMat, rBaseMat, dispFiltMat);
                        }
-                       dispFiltMat.convertTo(mDispMat, CV_8UC1, 1.0/16.0);
+                       dispFiltMat.convertTo(mDispMat, CV_32F, 1.0/16.0);
                } else {
                        LOGI("left : %s", results[0].get() ? "true" : "false");
                        if (mDownScale) {
@@ -451,14 +454,14 @@ namespace DfsAdaptationImpl
                                        static_cast<double>(1<<mDownScale),
                                        static_cast<double>(1<<mDownScale));
 
-                               tmp.convertTo(mDispMat, CV_8UC1, (1.0/16.0) * static_cast<double>(1 << mDownScale));
+                               tmp.convertTo(mDispMat, CV_32F, (1.0/16.0) * static_cast<double>(1 << mDownScale));
                        } else {
-                               dispMat.convertTo(mDispMat, CV_8UC1, 1.0/16.0);
+                               dispMat.convertTo(mDispMat, CV_32F, 1.0/16.0);
                        }
                }
 
-               mDepthData.data = mDispMat.ptr<unsigned char>();
-               mDepthData.type = DFS_DATA_TYPE_UINT8C1;
+               mDepthData.data = mDispMat.ptr<float>();
+               mDepthData.type = DFS_DATA_TYPE_FLOAT32C1;
                mDepthData.width = mDispMat.cols;
                mDepthData.height = mDispMat.rows;
                mDepthData.stride = mDispMat.elemSize() *  mDispMat.cols;