<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How can delete noise of R200 (Blob) and How can detect Handgesture in Items with no label</title>
    <link>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486670#M5356</link>
    <description>&lt;P&gt;I sadly could not find an answer for using SetDSMinMaxZ corectly, as I have never used it myself and so have no experience of programming it.  Also, there is very little documentation about the function available.  There are members of this forum who are far more expert than me on such calculations.  Hopefully they can help explain what you need to know.&lt;/P&gt;</description>
    <pubDate>Wed, 15 Feb 2017 19:44:06 GMT</pubDate>
    <dc:creator>MartyG</dc:creator>
    <dc:date>2017-02-15T19:44:06Z</dc:date>
    <item>
      <title>How can delete noise of R200 (Blob) and How can detect Handgesture</title>
      <link>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486665#M5351</link>
      <description>&lt;P&gt;void updateBlobImage(PXCImage* depthFrame)&lt;/P&gt;&lt;P&gt;  {&lt;/P&gt;&lt;P&gt;  if (depthFrame == nullptr) {&lt;/P&gt;&lt;P&gt;  return;&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // Blob 데이터 업데이트&lt;/P&gt;&lt;P&gt;  auto sts = blobData-&amp;gt;Update();&lt;/P&gt;&lt;P&gt;  if (sts &amp;lt; PXC_STATUS_NO_ERROR) {&lt;/P&gt;&lt;P&gt;  return;&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PXCImage::ImageInfo depthInfo = depthFrame-&amp;gt;QueryInfo();&lt;/P&gt;&lt;P&gt;  ContourImage = cv::Mat::zeros(depthInfo.height, depthInfo.width, CV_8U);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  auto session = sm-&amp;gt;QuerySession();&lt;/P&gt;&lt;P&gt;  depthInfo.format = PXCImage::PIXEL_FORMAT_Y8;&lt;/P&gt;&lt;P&gt;  PXCImage* blobImage = session-&amp;gt;CreateImage(&amp;amp;depthInfo);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // Blob 개수&lt;/P&gt;&lt;P&gt;  int numOfBlobs = blobData-&amp;gt;QueryNumberOfBlobs();&lt;/P&gt;&lt;P&gt;  for (int i = 0; i &amp;lt; numOfBlobs; ++i) {&lt;/P&gt;&lt;P&gt;  // Blob NEAR_TO_FAR&lt;/P&gt;&lt;P&gt;  PXCBlobData::IBlob* blob;&lt;/P&gt;&lt;P&gt;  PXCBlobData::AccessOrderType accessOrder = PXCBlobData::ACCESS_ORDER_NEAR_TO_FAR;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // Blob is queried according to image segmentation type (color/depth) &lt;/P&gt;&lt;P&gt;  PXCBlobData::SegmentationImageType segmentationType = PXCBlobData::SegmentationImageType::SEGMENTATION_IMAGE_DEPTH;&lt;/P&gt;&lt;P&gt;  blobData-&amp;gt;QueryBlob(i, segmentationType, accessOrder, blob);&lt;/P&gt;&lt;P&gt;  if (sts &amp;lt; PXC_STATUS_NO_ERROR) {&lt;/P&gt;&lt;P&gt;  continue;&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // Blob됪몴귩롦벦궥귡&lt;/P&gt;&lt;P&gt;  sts = blob-&amp;gt;QuerySegmentationImage(blobImage);&lt;/P&gt;&lt;P&gt;  if (sts &amp;lt; PXC_STATUS_NO_ERROR) {&lt;/P&gt;&lt;P&gt;  continue;&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // Blob됪몴귩벶귒뜛귔&lt;/P&gt;&lt;P&gt;  PXCImage::ImageData data;&lt;/P&gt;&lt;P&gt;  pxcStatus sts = blobImage-&amp;gt;AcquireAccess(PXCImage::Access::ACCESS_READ,&lt;/P&gt;&lt;P&gt;  PXCImage::PIXEL_FORMAT_Y8, &amp;amp;data);&lt;/P&gt;&lt;P&gt;  if (sts &amp;lt; PXC_STATUS_NO_ERROR) {&lt;/P&gt;&lt;P&gt;  continue;&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // 긢??귩긓긯?궥귡&lt;/P&gt;&lt;P&gt;  for (int j = 0; j &amp;lt; depthInfo.height * depthInfo.width; ++j) {&lt;/P&gt;&lt;P&gt;  if (data.planes[0][j] != 0) {&lt;/P&gt;&lt;P&gt;  // 귽깛긢긞긏긚궸귝궯궲갂륡뼞귩빾궑귡&lt;/P&gt;&lt;P&gt;  ContourImage.data[j] = (i + 1) * 64;&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // Blob됪몴귩됶뺳궥귡&lt;/P&gt;&lt;P&gt;  blobImage-&amp;gt;ReleaseAccess(&amp;amp;data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // Blob궻쀖둺귩?렑궥귡&lt;/P&gt;&lt;P&gt;  updateContoursImage(blob, i);&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // 됶뺳궥귡궴긄깋?궸궶귡&lt;/P&gt;&lt;P&gt;  //blobImage-&amp;gt;Release();&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  void updateContoursImage(PXCBlobData::IBlob* blob, int index)&lt;/P&gt;&lt;P&gt;  {&lt;/P&gt;&lt;P&gt;  // 블롭 찾기&lt;/P&gt;&lt;P&gt;  auto numOfContours = blob-&amp;gt;QueryNumberOfContours();&lt;/P&gt;&lt;P&gt;  for (int i = 0; i &amp;lt; numOfContours; ++i) {&lt;/P&gt;&lt;P&gt;  // 외곽선 찾기&lt;/P&gt;&lt;P&gt;  PXCBlobData::IContour* contour;&lt;/P&gt;&lt;P&gt;  blob-&amp;gt;QueryContour(i, contour);&lt;/P&gt;&lt;P&gt;  pxcI32 size = contour-&amp;gt;QuerySize();&lt;/P&gt;&lt;P&gt;  if (size &amp;lt;= 0) {&lt;/P&gt;&lt;P&gt;  continue;&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;  // ?귽깛긣봹쀱궻둴봃&lt;/P&gt;&lt;P&gt;  if (points.size() &amp;lt; size) {&lt;/P&gt;&lt;P&gt;  points.reserve(size);&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // 쀖둺궻?귩롦벦궥귡&lt;/P&gt;&lt;P&gt;  //auto sts = blob-&amp;gt;QueryContourPoints(i, points.size(), &amp;amp;points[0]);&lt;/P&gt;&lt;P&gt;  auto sts = contour-&amp;gt;QueryPoints(points.size(), &amp;amp;points[0]);&lt;/P&gt;&lt;P&gt;  if (sts &amp;lt; PXC_STATUS_NO_ERROR) {&lt;/P&gt;&lt;P&gt;  continue;&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // 쀖둺궻?귩?됪궥귡&lt;/P&gt;&lt;P&gt;  drawContour(&amp;amp;points[0], size, index);&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;  void drawContour(PXCPointI32* points, pxcI32 size, int index)&lt;/P&gt;&lt;P&gt;  {&lt;/P&gt;&lt;P&gt;  // ?궴?귩멄궳뙅귆&lt;/P&gt;&lt;P&gt;  for (int i = 0; i &amp;lt; (size - 1); ++i) {&lt;/P&gt;&lt;P&gt;  const auto&amp;amp; pt1 = points[i];&lt;/P&gt;&lt;P&gt;  const auto&amp;amp; pt2 = points[i + 1];&lt;/P&gt;&lt;P&gt;  cv::line(ContourImage, cv::Point(pt1.x, pt1.y), cv::Point(pt2.x, pt2.y),&lt;/P&gt;&lt;P&gt;  cv::Scalar(((index + 1) * 127)), 5);&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  // 띍뚣궻?궴띍룊궻?귩멄궳뙅귆&lt;/P&gt;&lt;P&gt;  const auto&amp;amp; pt1 = points[size - 1];&lt;/P&gt;&lt;P&gt;  const auto&amp;amp; pt2 = points[0];&lt;/P&gt;&lt;P&gt;  cv::line(ContourImage, cv::Point(pt1.x, pt1.y), cv::Point(pt2.x, pt2.y),&lt;/P&gt;&lt;P&gt;  cv::Scalar(((index + 1) * 127)), 5);&lt;/P&gt;&lt;P&gt;  }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;how can delete noise ??&lt;/P&gt;&lt;P&gt;and Is there any way to detect hand?(R200)&lt;/P&gt;&lt;P&gt;R200 not support Hand detection&lt;/P&gt;</description>
      <pubDate>Wed, 15 Feb 2017 12:25:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486665#M5351</guid>
      <dc:creator>GGyun</dc:creator>
      <dc:date>2017-02-15T12:25:12Z</dc:date>
    </item>
    <item>
      <title>Re: How can delete noise of R200 (Blob) and How can detect Handgesture</title>
      <link>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486666#M5352</link>
      <description>&lt;P&gt;One site suggested to people that were trying to reduce noise on the R200, "For R200 data, there is a hardware control to set the minimum depth distance. You can also try setting one of the depth control presets to 3, 4, or 5 for higher outlier rejection."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On that same information source, a couple of people recommended setting the depth control preset to '5' for best noise reduction results.  It looks as though the instruction for doing so is SetDSMinMaxZ()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/sites/landingpage/realsense/camera-sdk/v1.1/documentation/html/setdsminmaxz_device_pxccapture.html"&gt;https://software.intel.com/sites/landingpage/realsense/camera-sdk/v1.1/documentation/html/setdsminmaxz_device_pxccapture.html&lt;/A&gt; SetDSMinMaxZ&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;During my research, I came across a very nice and probably forgotten about Intel guide to the R200's depth settings.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/sites/default/files/Intel%20RealSense%20SDK%20Design%20Guidelines%20R200%20v1_1.pdf"&gt;https://software.intel.com/sites/default/files/Intel%20RealSense%20SDK%20Design%20Guidelines%20R200%20v1_1.pdf&lt;/A&gt; &lt;A href="https://software.intel.com/sites/default/files/Intel%20RealSense%20SDK%20Design%20Guidelines%20R200%20v1_1.pdf"&gt;https://software.intel.com/sites/default/files/Intel%20RealSense%20SDK%20Design%20Guidelines%20R200%20v1_1.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regarding the question of detecting the hand with the R200 when it does not have hand tracking: Blob Tracking is probably your best bet for doing that,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/sites/landingpage/realsense/camera-sdk/v1.1/documentation/html/doc_blob_blob_tracking.html"&gt;https://software.intel.com/sites/landingpage/realsense/camera-sdk/v1.1/documentation/html/doc_blob_blob_tracking.html&lt;/A&gt; Blob Tracking &lt;/P&gt;</description>
      <pubDate>Wed, 15 Feb 2017 12:56:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486666#M5352</guid>
      <dc:creator>MartyG</dc:creator>
      <dc:date>2017-02-15T12:56:01Z</dc:date>
    </item>
    <item>
      <title>Re: How can delete noise of R200 (Blob) and How can detect Handgesture</title>
      <link>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486667#M5353</link>
      <description>&lt;P&gt;How can I set this?? Can you show me example?&lt;/P&gt;</description>
      <pubDate>Wed, 15 Feb 2017 16:57:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486667#M5353</guid>
      <dc:creator>GGyun</dc:creator>
      <dc:date>2017-02-15T16:57:59Z</dc:date>
    </item>
    <item>
      <title>Re: How can delete noise of R200 (Blob) and How can detect Handgesture</title>
      <link>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486668#M5354</link>
      <description>&lt;P&gt;Do you mean how to set SetDSMinMaxZ ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This article was the only place where I could find scripts for it (they are in the C++ format).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/en-us/forums/realsense/topic/597076"&gt;https://software.intel.com/en-us/forums/realsense/topic/597076&lt;/A&gt; R200 SetDSMinMaxZ() fails with STATUS_DEVICE_FAILED &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And here is more information on using blobs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/sites/landingpage/realsense/camera-sdk/v1.1/documentation/html/index.html?doc_blob_understanding_the_blob_data.html"&gt;https://software.intel.com/sites/landingpage/realsense/camera-sdk/v1.1/documentation/html/index.html?doc_blob_understanding_the_blob_data.html&lt;/A&gt; Intel® RealSense™ SDK 2016 R2 Documentation &lt;/P&gt;</description>
      <pubDate>Wed, 15 Feb 2017 17:13:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486668#M5354</guid>
      <dc:creator>MartyG</dc:creator>
      <dc:date>2017-02-15T17:13:17Z</dc:date>
    </item>
    <item>
      <title>Re: How can delete noise of R200 (Blob) and How can detect Handgesture</title>
      <link>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486669#M5355</link>
      <description>&lt;P&gt;What is mean 3,4or5 ? &lt;/P&gt;&lt;P&gt;SetDSMinMaxZ parameter is range &lt;/P&gt;</description>
      <pubDate>Wed, 15 Feb 2017 19:24:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486669#M5355</guid>
      <dc:creator>GGyun</dc:creator>
      <dc:date>2017-02-15T19:24:55Z</dc:date>
    </item>
    <item>
      <title>Re: How can delete noise of R200 (Blob) and How can detect Handgesture</title>
      <link>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486670#M5356</link>
      <description>&lt;P&gt;I sadly could not find an answer for using SetDSMinMaxZ corectly, as I have never used it myself and so have no experience of programming it.  Also, there is very little documentation about the function available.  There are members of this forum who are far more expert than me on such calculations.  Hopefully they can help explain what you need to know.&lt;/P&gt;</description>
      <pubDate>Wed, 15 Feb 2017 19:44:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486670#M5356</guid>
      <dc:creator>MartyG</dc:creator>
      <dc:date>2017-02-15T19:44:06Z</dc:date>
    </item>
    <item>
      <title>Re: How can delete noise of R200 (Blob) and How can detect Handgesture</title>
      <link>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486671#M5357</link>
      <description>&lt;P&gt;Hi Faker,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;Taking this quote as reference "For R200 data, there is a hardware control to set the minimum depth distance. You can also try setting one of the depth control presets to 3, 4, or 5 for higher outlier rejection", one could say that setting the number to 3, 4 or 5 would reduce the reception of outlier data, this means that atypical numbers in a sample will likely be reduced depending on the number you set (3, 4 or 5), where 5 will give you the best results if this is what you're looking for.&lt;P&gt;&amp;nbsp;&lt;/P&gt;Regarding the use of SetDSMinMaxZ, I haven't use it before, so I would suggest you to test it on your own to see how it behaves and then implement it on your project.&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;Regards,&lt;P&gt;&amp;nbsp;&lt;/P&gt;-Pablo</description>
      <pubDate>Fri, 17 Feb 2017 18:55:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Items-with-no-label/How-can-delete-noise-of-R200-Blob-and-How-can-detect-Handgesture/m-p/486671#M5357</guid>
      <dc:creator>idata</dc:creator>
      <dc:date>2017-02-17T18:55:33Z</dc:date>
    </item>
  </channel>
</rss>

