{"id":26409617,"url":"https://github.com/fentas/mips-pgm-image-processing","last_synced_at":"2025-06-24T08:33:07.616Z","repository":{"id":78543384,"uuid":"83221629","full_name":"fentas/MIPS-pgm-image-processing","owner":"fentas","description":"Rechnerorganisation: Hausaufgabe MIPS-Assembler (PGM processing)","archived":false,"fork":false,"pushed_at":"2017-02-26T16:08:37.000Z","size":198,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T19:41:28.232Z","etag":null,"topics":["image-processing","mips","pgm","rechnerorganisation","tu-berlin"],"latest_commit_sha":null,"homepage":null,"language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fentas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2017-02-26T16:02:34.000Z","updated_at":"2021-09-07T18:27:52.000Z","dependencies_parsed_at":"2023-03-30T09:23:20.475Z","dependency_job_id":null,"html_url":"https://github.com/fentas/MIPS-pgm-image-processing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fentas/MIPS-pgm-image-processing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fentas%2FMIPS-pgm-image-processing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fentas%2FMIPS-pgm-image-processing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fentas%2FMIPS-pgm-image-processing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fentas%2FMIPS-pgm-image-processing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fentas","download_url":"https://codeload.github.com/fentas/MIPS-pgm-image-processing/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fentas%2FMIPS-pgm-image-processing/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261635755,"owners_count":23187907,"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":["image-processing","mips","pgm","rechnerorganisation","tu-berlin"],"created_at":"2025-03-17T19:35:02.871Z","updated_at":"2025-06-24T08:33:07.601Z","avatar_url":"https://github.com/fentas.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rechnerorganisation - Hausaufgabe MIPS-Assembler\n\nDie Hausaufgaben sind unterteilt in..\n\n- [x] [Bilder laden und speichern](#bilder-laden-und-speichern-7-punkte) (7 Punkte)\n- [x] [Verringern der Bildauflösung](verringern-der-bildaufl%C3%B6sung-7-punkte) (7 Punkte)\n- [x] [Verringern der Farbtiefe](#verringern-der-farbtiefe-3-punkte) (3 Punkte)\n- [x] [Betrachtungsaufgabe](#betrachtungsaufgabe-3-punkte) (3 Punkte)\n- [x] Auf den tubit Rechnerpools testen.\n\n`qtspim` im root Verzeichnis starten! Ansonsten stimmen die Pfade nicht.\n[Anleitung](https://isis.tu-berlin.de/pluginfile.php/558943/mod_forum/attachment/241471/QtSpim_Leitfaden.pdf) für `qtspim` auf den tubit Rechnerpools.\n\n## Bilder laden und speichern (7 Punkte)\n```mips\nload_img\n\n@param  $a0 pointer to filename\n@return $v0 image content \u003c8bit segments\u003e\n@return $v1 header information \u003c[0]width [1]height [2]brightness\u003e\n```\n```mips\nstore_img\n\n@param  $a0 image content \u003c8bit segments\u003e\n@param  $a1 header information \u003c[0]width [1]height [2]brightness\u003e\n@param  $a2 filename pointer\n@return void\n```\n\n## Verringern der Bildauflösung (7 Punkte)\n```mips\ninterpolate2\n\n@param  $a0 image content \u003c8bit segments\u003e\n@param  $a1 header information \u003c[0]width [1]height [2]brightness\u003e\n@return void\n```\n\n```mips\ninterpolate\n~ calls interpolate2\n\n@param  $a0 image content \u003c8bit segments\u003e\n@param  $a1 header information \u003c[0]width [1]height [2]brightness\u003e\n@param  $a2 power (2^n) of reduction\n@return void\n```\n\n## Verringern der Farbtiefe (3 Punkte)\n```mips\nquantize\n\n@param  $a0 image content \u003c8bit segments\u003e\n@param  $a1 header information \u003c[0]width [1]height [2]brightness\u003e\n@param  $a2 quantize factor\n@return void\n```\n\n## Betrachtungsaufgabe (3 Punkte)\n`wood.pgm` First quantize then interpolate:\n\u003e ![wood_q_then_i (local)](images/Aufgabe4/wood_q_then_i.png \"First quantize then interpolate\")\n\n`wood.pgm` First interpolate then quantize:\n\u003e ![wood_i_then_q (local)](images/Aufgabe4/wood_i_then_q.png \"First interpolate then quantize\")\n\n\n`worn.pgm` First quantize then interpolate:\n\u003e ![worn_q_then_i (local)](images/Aufgabe4/worn_q_then_i.png \"First quantize then interpolate\")\n\n`worn.pgm` First interpolate then quantize:\n\u003e ![worn_i_then_q (local)](images/Aufgabe4/worn_i_then_q.png \"First interpolate then quantize\")\n\n`sky.pgm` First quantize then interpolate:\n\u003e ![sky_q_then_i (local)](images/Aufgabe4/sky_q_then_i.png \"First quantize then interpolate\")\n\n`sky.pgm` First interpolate then quantize:\n\u003e ![sky_i_then_q (local)](images/Aufgabe4/sky_i_then_q.png \"First interpolate then quantize\")\n\n\nWie an den Bildern zu erkennen ist (`Unteraufgabe 1`), gehen mehr Informationen im\nBild verloren, wenn zuerst die Farbtiefe verringert wird, bevor der Auflösung.\nDas liegt daran, dass beim Verringern der Farbtiefe das Spektrum der Farben\nreduziert wird (verlust von signifikanten Bits), sodass beim verringern der Auflösung,\nbei dem ziehen des Mittelwerts, schon ein signifikanter Informationsverlust\nstatt gefunden hat.\n\n### References\n- [1] http://spimsimulator.sourceforge.net/HP_AppA.pdf\n~ Assemblers, Linkers, and the SPIM Simulator\n- [2] http://stackoverflow.com/questions/22588905/mips-dynamic-memory-allocation-using-sbrk\n- [3] https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/pseudo.html\n- [4] https://www.cs.ucsb.edu/~franklin/64/lectures/mipsassemblytutorial.pdf\n- [5] http://fxr.watson.org/fxr/source/sys/fcntl.h?im=10#L65\n~ file open flags (O_RDONLY|O_WRONLY|O_RDWR|O_ACCMODE)\n- [6] https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/dataseg.html\n~ Data and Text Segment\n- [7] https://de.wikipedia.org/wiki/Portable_Anymap\n- [8] http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/jump.html\n~ Conditional and Unconditional Jumps\n- [9] https://www.doc.ic.ac.uk/lab/secondyear/spim/node16.html\n~ Branch and Jump Instructions\n- [10] http://www.programmingforums.org/thread39778.html\n~ itoa procedure (assembly MIPS)\n- [11] http://stackoverflow.com/questions/4580166/length-of-array-in-mips\n~ length of array in mips\n- [12] http://stackoverflow.com/questions/9180983/mips-memory-management\n~ mips memory management\n- [13] http://stackoverflow.com/questions/18812319/multiplication-using-logical-shifts-in-mips-assembly\n~ Multiplication using Logical shifts in Mips assembly\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffentas%2Fmips-pgm-image-processing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffentas%2Fmips-pgm-image-processing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffentas%2Fmips-pgm-image-processing/lists"}