{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-04-06T14:01:22.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2026-04-06T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":839,"title":"Compute the dilation of a binary image","description":"A basic operation in image analysis is the dilation. Given an image where each pixel is either on or off (black/white, true/false), and a neighbourhood, the result of the operation at one pixel is 'on' (white/true) if any of the pixels covered by the neighbourhood, when centred on that pixel, is 'on'.\r\n\r\nTake for example a 3x3 neighbourhood. When centring it on any one pixel, it covers that pixel plus its 8 direct neighbours. If any of those 9 pixels is 'on' in the input, that pixel will be 'on' in the output. Looking at it in another way, any 'on' pixel in the input will cause all its 8 direct neighbours to be 'on' in the output.\r\n\r\nYour task is to write an algorithm that takes a matrix with 1s and 0s, and computes the dilation. Do not use any toolbox functions, the test suite checks against them (don't use variable names containing things like 'dilate' or 'conv' or 'filt'!).","description_html":"\u003cp\u003eA basic operation in image analysis is the dilation. Given an image where each pixel is either on or off (black/white, true/false), and a neighbourhood, the result of the operation at one pixel is 'on' (white/true) if any of the pixels covered by the neighbourhood, when centred on that pixel, is 'on'.\u003c/p\u003e\u003cp\u003eTake for example a 3x3 neighbourhood. When centring it on any one pixel, it covers that pixel plus its 8 direct neighbours. If any of those 9 pixels is 'on' in the input, that pixel will be 'on' in the output. Looking at it in another way, any 'on' pixel in the input will cause all its 8 direct neighbours to be 'on' in the output.\u003c/p\u003e\u003cp\u003eYour task is to write an algorithm that takes a matrix with 1s and 0s, and computes the dilation. Do not use any toolbox functions, the test suite checks against them (don't use variable names containing things like 'dilate' or 'conv' or 'filt'!).\u003c/p\u003e","function_template":"function out = mymorphop(in)\r\nout = in;\r\nend","test_suite":"%%\r\nf = fopen('mymorphop.m','rt');\r\ncode = lower(fread(f,Inf,'*char'))';\r\nfclose(f);\r\nassert(isempty(strfind(code,'dilat')))\r\nassert(isempty(strfind(code,'erode')))\r\nassert(isempty(strfind(code,'bwmorph')))\r\nassert(isempty(strfind(code,'filt')))\r\nassert(isempty(strfind(code,'conv')))\r\n\r\n%%\r\nin = zeros(3,3);\r\nout = in;\r\nassert(isequal(mymorphop(in),out));\r\n\r\n%%\r\nin = zeros(10,5);\r\nin(4,3) = 1;\r\nout = in;\r\nout(3:5,2:4) = 1;\r\nassert(isequal(mymorphop(in),out));\r\n\r\n%%\r\nin =  [0,0,1,0,0,1,0\r\n       0,1,0,0,0,1,1\r\n       1,1,0,0,0,0,0\r\n       1,0,0,0,0,0,1\r\n       1,0,0,0,0,1,1];\r\nout = [1,1,1,1,1,1,1\r\n       1,1,1,1,1,1,1\r\n       1,1,1,0,1,1,1\r\n       1,1,1,0,1,1,1\r\n       1,1,0,0,1,1,1];\r\nassert(isequal(mymorphop(in),out));\r\n\r\n%%\r\nin =  [0,0,1,0,0,0,0,0,1\r\n       0,1,0,0,0,0,0,0,1\r\n       1,1,0,0,0,0,0,0,1\r\n       1,0,0,0,0,0,0,0,1\r\n       1,0,0,0,0,0,0,0,1];\r\nout = [1,1,1,1,0,0,0,1,1\r\n       1,1,1,1,0,0,0,1,1\r\n       1,1,1,0,0,0,0,1,1\r\n       1,1,1,0,0,0,0,1,1\r\n       1,1,0,0,0,0,0,1,1];\r\nassert(isequal(mymorphop(in),out));\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":1,"created_by":1411,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":53,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-07-17T20:49:47.000Z","updated_at":"2026-03-31T15:00:48.000Z","published_at":"2012-07-17T21:03:26.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eA basic operation in image analysis is the dilation. Given an image where each pixel is either on or off (black/white, true/false), and a neighbourhood, the result of the operation at one pixel is 'on' (white/true) if any of the pixels covered by the neighbourhood, when centred on that pixel, is 'on'.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTake for example a 3x3 neighbourhood. When centring it on any one pixel, it covers that pixel plus its 8 direct neighbours. If any of those 9 pixels is 'on' in the input, that pixel will be 'on' in the output. Looking at it in another way, any 'on' pixel in the input will cause all its 8 direct neighbours to be 'on' in the output.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task is to write an algorithm that takes a matrix with 1s and 0s, and computes the dilation. Do not use any toolbox functions, the test suite checks against them (don't use variable names containing things like 'dilate' or 'conv' or 'filt'!).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":839,"title":"Compute the dilation of a binary image","description":"A basic operation in image analysis is the dilation. Given an image where each pixel is either on or off (black/white, true/false), and a neighbourhood, the result of the operation at one pixel is 'on' (white/true) if any of the pixels covered by the neighbourhood, when centred on that pixel, is 'on'.\r\n\r\nTake for example a 3x3 neighbourhood. When centring it on any one pixel, it covers that pixel plus its 8 direct neighbours. If any of those 9 pixels is 'on' in the input, that pixel will be 'on' in the output. Looking at it in another way, any 'on' pixel in the input will cause all its 8 direct neighbours to be 'on' in the output.\r\n\r\nYour task is to write an algorithm that takes a matrix with 1s and 0s, and computes the dilation. Do not use any toolbox functions, the test suite checks against them (don't use variable names containing things like 'dilate' or 'conv' or 'filt'!).","description_html":"\u003cp\u003eA basic operation in image analysis is the dilation. Given an image where each pixel is either on or off (black/white, true/false), and a neighbourhood, the result of the operation at one pixel is 'on' (white/true) if any of the pixels covered by the neighbourhood, when centred on that pixel, is 'on'.\u003c/p\u003e\u003cp\u003eTake for example a 3x3 neighbourhood. When centring it on any one pixel, it covers that pixel plus its 8 direct neighbours. If any of those 9 pixels is 'on' in the input, that pixel will be 'on' in the output. Looking at it in another way, any 'on' pixel in the input will cause all its 8 direct neighbours to be 'on' in the output.\u003c/p\u003e\u003cp\u003eYour task is to write an algorithm that takes a matrix with 1s and 0s, and computes the dilation. Do not use any toolbox functions, the test suite checks against them (don't use variable names containing things like 'dilate' or 'conv' or 'filt'!).\u003c/p\u003e","function_template":"function out = mymorphop(in)\r\nout = in;\r\nend","test_suite":"%%\r\nf = fopen('mymorphop.m','rt');\r\ncode = lower(fread(f,Inf,'*char'))';\r\nfclose(f);\r\nassert(isempty(strfind(code,'dilat')))\r\nassert(isempty(strfind(code,'erode')))\r\nassert(isempty(strfind(code,'bwmorph')))\r\nassert(isempty(strfind(code,'filt')))\r\nassert(isempty(strfind(code,'conv')))\r\n\r\n%%\r\nin = zeros(3,3);\r\nout = in;\r\nassert(isequal(mymorphop(in),out));\r\n\r\n%%\r\nin = zeros(10,5);\r\nin(4,3) = 1;\r\nout = in;\r\nout(3:5,2:4) = 1;\r\nassert(isequal(mymorphop(in),out));\r\n\r\n%%\r\nin =  [0,0,1,0,0,1,0\r\n       0,1,0,0,0,1,1\r\n       1,1,0,0,0,0,0\r\n       1,0,0,0,0,0,1\r\n       1,0,0,0,0,1,1];\r\nout = [1,1,1,1,1,1,1\r\n       1,1,1,1,1,1,1\r\n       1,1,1,0,1,1,1\r\n       1,1,1,0,1,1,1\r\n       1,1,0,0,1,1,1];\r\nassert(isequal(mymorphop(in),out));\r\n\r\n%%\r\nin =  [0,0,1,0,0,0,0,0,1\r\n       0,1,0,0,0,0,0,0,1\r\n       1,1,0,0,0,0,0,0,1\r\n       1,0,0,0,0,0,0,0,1\r\n       1,0,0,0,0,0,0,0,1];\r\nout = [1,1,1,1,0,0,0,1,1\r\n       1,1,1,1,0,0,0,1,1\r\n       1,1,1,0,0,0,0,1,1\r\n       1,1,1,0,0,0,0,1,1\r\n       1,1,0,0,0,0,0,1,1];\r\nassert(isequal(mymorphop(in),out));\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":1,"created_by":1411,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":53,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-07-17T20:49:47.000Z","updated_at":"2026-03-31T15:00:48.000Z","published_at":"2012-07-17T21:03:26.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eA basic operation in image analysis is the dilation. Given an image where each pixel is either on or off (black/white, true/false), and a neighbourhood, the result of the operation at one pixel is 'on' (white/true) if any of the pixels covered by the neighbourhood, when centred on that pixel, is 'on'.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTake for example a 3x3 neighbourhood. When centring it on any one pixel, it covers that pixel plus its 8 direct neighbours. If any of those 9 pixels is 'on' in the input, that pixel will be 'on' in the output. Looking at it in another way, any 'on' pixel in the input will cause all its 8 direct neighbours to be 'on' in the output.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task is to write an algorithm that takes a matrix with 1s and 0s, and computes the dilation. Do not use any toolbox functions, the test suite checks against them (don't use variable names containing things like 'dilate' or 'conv' or 'filt'!).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"term":"tag:\"image analysis\"","current_player_id":null,"fields":[{"name":"page","type":"integer","callback":null,"default":1,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"per_page","type":"integer","callback":null,"default":50,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"sort","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"body","type":"text","callback":null,"default":"*:*","directive":null,"facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":false},{"name":"group","type":"string","callback":null,"default":null,"directive":"group","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"difficulty_rating_bin","type":"string","callback":null,"default":null,"directive":"difficulty_rating_bin","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"id","type":"integer","callback":null,"default":null,"directive":"id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"tag","type":"string","callback":null,"default":null,"directive":"tag","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"product","type":"string","callback":null,"default":null,"directive":"product","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_at","type":"timeframe","callback":{},"default":null,"directive":"created_at","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"profile_id","type":"integer","callback":null,"default":null,"directive":"author_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_by","type":"string","callback":null,"default":null,"directive":"author","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player_id","type":"integer","callback":null,"default":null,"directive":"solver_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player","type":"string","callback":null,"default":null,"directive":"solver","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"solvers_count","type":"integer","callback":null,"default":null,"directive":"solvers_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"comments_count","type":"integer","callback":null,"default":null,"directive":"comments_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"likes_count","type":"integer","callback":null,"default":null,"directive":"likes_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leader_id","type":"integer","callback":null,"default":null,"directive":"leader_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leading_solution","type":"integer","callback":null,"default":null,"directive":"leading_solution","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true}],"filters":[{"name":"asset_type","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":"\"cody:problem\"","prepend":true},{"name":"profile_id","type":"integer","callback":{},"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":"author_id","static":null,"prepend":true}],"query":{"params":{"per_page":50,"term":"tag:\"image analysis\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"image analysis\"","","\"","image analysis","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f17e0699bb0\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f17e0699b10\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f17e0699250\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f17e0699e30\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f17e0699d90\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f17e0699cf0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f17e0699c50\u003e":"tag:\"image analysis\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f17e0699c50\u003e":"tag:\"image analysis\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"cody-search","password":"78X075ddcV44","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"image analysis\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"image analysis\"","","\"","image analysis","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f17e0699bb0\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f17e0699b10\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f17e0699250\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f17e0699e30\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f17e0699d90\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f17e0699cf0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f17e0699c50\u003e":"tag:\"image analysis\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f17e0699c50\u003e":"tag:\"image analysis\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":839,"difficulty_rating":"easy-medium"}]}}