{"id":19093407,"url":"https://github.com/imagej/imagej-ops","last_synced_at":"2025-07-18T05:35:41.820Z","repository":{"id":14786962,"uuid":"17508889","full_name":"imagej/imagej-ops","owner":"imagej","description":"ImageJ Ops: \"Write once, run anywhere\" image processing","archived":false,"fork":false,"pushed_at":"2024-08-29T15:52:00.000Z","size":15277,"stargazers_count":89,"open_issues_count":175,"forks_count":42,"subscribers_count":36,"default_branch":"master","last_synced_at":"2025-05-07T22:33:43.924Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://imagej.net/libs/imagej-ops","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"agragregra/start_html","license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imagej.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-03-07T09:19:29.000Z","updated_at":"2024-11-08T08:09:57.000Z","dependencies_parsed_at":"2023-01-12T18:15:58.367Z","dependency_job_id":"c673acb1-fc17-4b3b-b0d9-5dfde8cc0768","html_url":"https://github.com/imagej/imagej-ops","commit_stats":null,"previous_names":[],"tags_count":73,"template":false,"template_full_name":null,"purl":"pkg:github/imagej/imagej-ops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-ops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-ops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-ops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-ops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imagej","download_url":"https://codeload.github.com/imagej/imagej-ops/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagej%2Fimagej-ops/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265705520,"owners_count":23814481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T03:24:31.709Z","updated_at":"2025-07-18T05:35:41.772Z","avatar_url":"https://github.com/imagej.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![](https://github.com/imagej/imagej-ops/actions/workflows/build-main.yml/badge.svg)](https://github.com/imagej/imagej-ops/actions/workflows/build-main.yml)\n[![developer chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://imagesc.zulipchat.com/#narrow/stream/327236-ImageJ2)\n\nImageJ Ops\n==========\n\nImageJ Ops is an extensible Java framework for algorithms, particularly image\nprocessing algorithms. Ops seeks to be a unifying library for scientific image\nprocessing. See the\n[Motivation](https://github.com/imagej/imagej-ops/wiki/Motivation) page for\ndetails.\n\nGetting started\n---------------\n\nEach op has a list of typed input and output parameters on which it operates.\nYou can think of an op as a (potentially multi-variable) function:\n```\nsum = math.add(a, b)\n(phase, amplitude) = fft(image)\n```\n\nIn many cases you can also pass a pre-allocated output which will be populated:\n```\nmath.add(sum, a, b)\n```\n\nSome ops take other ops as inputs, which allows for things like \"execute this\nop on every pixel of that image\":\n```\nadd_op = op(\"math.add\", 5)\noutput_image = map(input_image, add_op)\n```\n\nFor more details, see the \"Introduction to ImageJ Ops\" tutorial notebook:\n\n  https://imagej.github.io/tutorials\n\nWorking example\n---------------\n\nTry this Jython script in ImageJ's\n[Script Editor](http://imagej.net/Script_Editor)!\n\n```python\n#@ ImageJ ij\n\n# create a new blank image\nfrom jarray import array\ndims = array([150, 100], 'l')\nblank = ij.op().create().img(dims)\n\n# fill in the image with a sinusoid using a formula\nformula = \"10 * (Math.cos(0.3*p[0]) + Math.sin(0.3*p[1]))\"\nsinusoid = ij.op().image().equation(blank, formula)\n\n# add a constant value to an image\nij.op().math().add(sinusoid, 13.0)\n\n# generate a gradient image using a formula\ngradient = ij.op().image().equation(ij.op().create().img(dims), \"p[0]+p[1]\")\n\n# add the two images\ncomposite = ij.op().create().img(dims)\nij.op().math().add(composite, sinusoid, gradient)\n\n# display the images\nij.ui().show(\"sinusoid\", sinusoid)\nij.ui().show(\"gradient\", gradient)\nij.ui().show(\"composite\", composite)\n```\n\nThe output:\n\n![sinusoid](images/sinusoid.png) ![gradient](images/gradient.png) ![composite](images/composite.png)\n\nHow to contribute\n-----------------\n\nWe welcome [pull requests](https://help.github.com/articles/using-pull-requests)!\n* Use an\n  [existing op](https://github.com/imagej/tutorials/tree/master/maven-projects/create-a-new-op)\n  as a starting point\n* Use [ImageJ code style](http://imagej.net/Coding_style)\n* Use\n  [small](https://crealytics.com/blog/5-reasons-keeping-git-commits-small/),\n  [well-written](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)\n  commits\n* Use a [topic branch](http://imagej.net/Git_topic_branches)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimagej%2Fimagej-ops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimagej%2Fimagej-ops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimagej%2Fimagej-ops/lists"}