{
  "_id": "6a4a31be96bf500e17672c89",
  "Package": "thinr",
  "Title": "Binary Image Thinning Algorithms",
  "Version": "0.2.0",
  "Authors@R": "person(\"Bill\", \"Denney\", , \"wdenney@humanpredictions.com\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-5759-428X\",\naffiliation = \"Human Predictions, LLC\"))",
  "Description": "Thinning (skeletonization) algorithms for binary raster\nimages. Provides seven algorithms behind a single dispatching\nfunction: Zhang-Suen (Zhang and Suen 1984)\n<doi:10.1145/357994.358023>, Guo-Hall (Guo and Hall 1989)\n<doi:10.1145/62065.62074>, a 2-D adaptation of Lee (Lee,\nKashyap, and Chu 1994) <doi:10.1006/cgip.1994.1042>, K3M\n(Saeed, Tabedzki, Rybnik, and Adamski 2010)\n<doi:10.2478/v10006-010-0024-4>, the parallel form commonly\nattributed to Hilditch (1969, in 'Machine Intelligence 4'),\nOPTA / SPTA (Naccache and Shinghal 1984), and Holt and\ncolleagues (1987) <doi:10.1145/12527.12531>. Also provides the\nmedial axis transform (Blum 1967) and a distance transform\nimplementation following Felzenszwalb and Huttenlocher (2012)\n<doi:10.4086/toc.2012.v008a019>. The thin() API selects the\nalgorithm by name, defaulting to Zhang-Suen. Complements the\nmorphology in the 'EBImage' package, which does not provide a\nthinning operator.",
  "License": "LGPL-3",
  "Encoding": "UTF-8",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "8.0.0",
  "URL": "https://github.com/humanpred/thinr,\nhttps://humanpred.github.io/thinr/",
  "BugReports": "https://github.com/humanpred/thinr/issues",
  "Repository": "https://humanpred.r-universe.dev",
  "Date/Publication": "2026-07-04 20:34:46 UTC",
  "RemoteUrl": "https://github.com/humanpred/thinr",
  "RemoteRef": "HEAD",
  "RemoteSha": "551e54a4889cfbf72c956001e0d898b92d36b625",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-07-05 10:23:16 UTC",
    "User": "root"
  },
  "Author": "Bill Denney [aut, cre] (ORCID: <https://orcid.org/0000-0002-5759-428X>,\naffiliation: Human Predictions, LLC)",
  "Maintainer": "Bill Denney <wdenney@humanpredictions.com>",
  "_user": "humanpred",
  "_type": "src",
  "_file": "thinr_0.2.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/5687160a553b04e17f492e035a1bd01df0b1b27934bb06fc66d71e25287cdf8f",
  "_filesize": 154506,
  "_sha256": "5687160a553b04e17f492e035a1bd01df0b1b27934bb06fc66d71e25287cdf8f",
  "_expires": "2026-10-13T10:28:12.000Z",
  "_created": "2026-07-05T10:23:16.000Z",
  "_published": "2026-07-05T10:28:14.356Z",
  "_jobs": [
    {
      "job": 85214517829,
      "time": 151,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8090850102"
    },
    {
      "job": 85214517821,
      "time": 147,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8090849387"
    },
    {
      "job": 85214517838,
      "time": 159,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8090851078"
    },
    {
      "job": 85214517843,
      "time": 151,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8090849928"
    },
    {
      "job": 85214517831,
      "time": 143,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8090848757"
    },
    {
      "job": 85214517830,
      "time": 246,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8090860561"
    },
    {
      "job": 85214517839,
      "time": 119,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8090845982"
    },
    {
      "job": 85214517832,
      "time": 222,
      "config": "macos-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8090857931"
    },
    {
      "job": 85214261989,
      "time": 221,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8090830803"
    },
    {
      "job": 85214517806,
      "time": 162,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8090851084"
    },
    {
      "job": 85214517811,
      "time": 146,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8090849192"
    },
    {
      "job": 85214517826,
      "time": 136,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8090848052"
    },
    {
      "job": 85214517841,
      "time": 152,
      "config": "windows-release",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8090850000"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482",
  "_status": "success",
  "_upstream": "https://github.com/humanpred/thinr",
  "_commit": {
    "id": "551e54a4889cfbf72c956001e0d898b92d36b625",
    "author": "Bill Denney <billdenney@users.noreply.github.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Merge pull request #8 from humanpred/review-backlog/thinr\n\nDocument + pin F017: zhang_suen erases isolated 2x2 blocks\n\nAn isolated 2x2 block is a genuine divergence point between the parallel\nalgorithms and matters for small-blob masks (marker remnants, dotted-line\ndashes, segmentation specks). All four block pixels satisfy the zhang_suen\ndeletion gate (B == 3, A == 1, both sub-iteration corner products zero) in\nthe same sub-iteration, so the default method erases the block entirely,\nwhile guo_hall keeps exactly one pixel.\n\nDocument the property in vignette(\"choosing-a-method\") -- a caveat on the\nzhang_suen/guo_hall bullets plus a new \"Small isolated blobs\" subsection\nwith a runnable example and the mitigation (use guo_hall or size-filter\nblobs before thinning). Add a tripwire-style pinned test asserting\nzhang_suen -> empty and guo_hall -> one pixel; if either count changes,\nthe vignette guidance is wrong and must be updated with it.\n\nAlso records the F014 hilditch fix in NEWS.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
    "time": 1783197286
  },
  "_maintainer": {
    "name": "Bill Denney",
    "email": "wdenney@humanpredictions.com",
    "login": "billdenney",
    "description": "",
    "uuid": 10359931,
    "orcid": "0000-0002-5759-428X"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2",
      "role": "Depends"
    },
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "Rcpp",
      "role": "Imports"
    },
    {
      "package": "bench",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "lintr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "styler",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "humanpred",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-20",
      "n": 5
    },
    {
      "week": "2026-22",
      "n": 4
    },
    {
      "week": "2026-26",
      "n": 1
    },
    {
      "week": "2026-27",
      "n": 3
    }
  ],
  "_tags": [],
  "_stars": 0,
  "_contributors": [
    {
      "user": "billdenney",
      "count": 41,
      "uuid": 10359931
    }
  ],
  "_userbio": {
    "uuid": 130697527,
    "type": "organization",
    "name": "humanpred",
    "followers": 9
  },
  "_downloads": {
    "count": 443,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/thinr"
  },
  "_devurl": "https://github.com/humanpred/thinr",
  "_pkgdown": "https://humanpred.github.io/thinr/",
  "_searchresults": 0,
  "_topics": [
    "cpp"
  ],
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/thinr.html",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/humanpred/thinr",
  "_realowner": "humanpred",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.2.0",
      "date": "2026-05-27"
    }
  ],
  "_exports": [
    "distance_transform",
    "medial_axis",
    "thin"
  ],
  "_help": [
    {
      "page": "distance_transform",
      "title": "Distance transform of a binary image",
      "topics": [
        "distance_transform"
      ]
    },
    {
      "page": "medial_axis",
      "title": "Medial axis transform",
      "topics": [
        "medial_axis"
      ]
    },
    {
      "page": "thin",
      "title": "Thin (skeletonize) a binary image",
      "topics": [
        "thin"
      ]
    }
  ],
  "_readme": "https://github.com/humanpred/thinr/raw/HEAD/README.md",
  "_rundeps": [
    "Rcpp"
  ],
  "_sysdeps": [
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "16-20260322-1ubuntu1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    }
  ],
  "_vignettes": [
    {
      "source": "choosing-a-method.Rmd",
      "filename": "choosing-a-method.html",
      "title": "Choosing a thinning method",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What's implemented",
        "A quick visual comparison",
        "When to use which",
        "Small isolated blobs",
        "Medial axis transform",
        "Distance transform",
        "Inputs and outputs",
        "Performance",
        "References",
        "Thinning",
        "Survey",
        "Medial axis and distance transform"
      ],
      "created": "2026-05-16 19:00:06",
      "modified": "2026-07-04 20:34:46",
      "commits": 5
    },
    {
      "source": "correctness-properties.Rmd",
      "filename": "correctness-properties.html",
      "title": "Correctness properties: edge handling, connectivity, and boundary cases",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Scope",
        "1. Edge handling: shapes that touch the frame",
        "2. Connectivity: thin strokes must not fragment",
        "3. Distance transform with no background pixel",
        "4. Invalid input fails loudly",
        "Summary",
        "References"
      ],
      "created": "2026-07-04 12:11:24",
      "modified": "2026-07-04 12:11:24",
      "commits": 1
    }
  ],
  "_score": 4.6020599913279625,
  "_indexed": true,
  "_nocasepkg": "thinr",
  "_universes": [
    "humanpred",
    "billdenney"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-07-05T10:25:53.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/a7673d31d20f5ca6c70add585cb3c2fa86f26b002537ef6f323f5fba14374ae3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-07-05T10:25:41.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/2a9efe614521c0870cdeffe704c2d04df8dd5e024cfce35c1aa88bc73eb8630b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-07-05T10:26:01.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/81b795742c436c398c047ed36ab47a08aa86b8f03992f2c39c65611b25707537",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-07-05T10:25:45.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/230fea86bb0ba3143cfb1829605c3d82889e3ab11ee27011e5cfc739119a9b82",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-07-05T10:25:39.000Z",
      "arch": "aarch64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/df974ea88f50ee322bb151b668b4509b0dd39a77b861394bf272fe44452a611e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-07-05T10:27:00.000Z",
      "arch": "x86_64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/bd9ca7bf8ab290cd5bd04fa2869e6124d240f81e02017da7258a128cce0204ad",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-07-05T10:25:21.000Z",
      "arch": "aarch64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/c9c846544487af12231514e4dbd01c40b30a2b9c718a97e28088e54bf614c600",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-07-05T10:26:40.000Z",
      "arch": "x86_64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/ff15f8f23441345578dea779802ffe498cb19419419b1609150851f242ef2c9d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-07-05T10:26:08.000Z",
      "arch": "emscripten",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/06cd18ca91eb11d5141b4e163e3946258e09d3c58016956b2e2a57d0fbd12d62",
      "status": "success",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-07-05T10:25:10.000Z",
      "arch": "x86_64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/daead593d4891f9b42a0e992372d6fd57f6402fd59cff5ee24a24cc3ea720ecc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-07-05T10:25:08.000Z",
      "arch": "x86_64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/7a483e3b31a42d58716be47286a94a8f627516c257da6322608ea65ff1040dbf",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-07-05T10:25:18.000Z",
      "arch": "x86_64",
      "commit": "551e54a4889cfbf72c956001e0d898b92d36b625",
      "fileid": "https://r2.ropensci.org/2c4bd6b531539c3f325aba5e89da00a2d9cd70ceadf793b8c30ebd49bf558c94",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/humanpred/actions/runs/28737509482"
    }
  ]
}