Homework 3

‫ﺑﺴﻤﻪ ﺗﻌﺎﻟﻲ‬
‫ﺳﻴﺴﺘﻢ ﻫﺎي ﭼﻨﺪرﺳﺎﻧﻪاي )‪(40-342‬‬
‫داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫‪ 14‬ﻓﺮوردﻳﻦ ‪1390‬‬
‫دﻛﺘﺮ ﻣﻬﺪي اﻣﻴﺮي‬
‫ﺗﻜﻠﻴﻒ ﺷﻤﺎﺭﻩ ‪ :۳‬ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ‬
‫ﻣﻘﺪﻣﻪ‬
‫ﺩﺭ ﺍﻳﻦ ﺗﻤﺮﻳﻦ‪ ،‬ﺷﻤﺎ ﺑﺎ ﺑﺮﺧﯽ ﺍﺑﺰﺍﺭﻫﺎ ﻭ ﺭﻭﺵﻫﺎﯼ ﺍﺻﻠﯽ ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ ﺁﺷﻨﺎ ﺧﻮﺍﻫﻴﺪ ﺷﺪ‪.‬‬
‫ﺁﻧﭽﻪ ﮐﻪ ﺑﺎﻳﺴﺘﻲ ﺗﺤﻮﻳﻞ ﺩﺍﺩﻩ ﺷﻮﺩ ﺷﺎﻣﻞ ﭘﺎﺳﺦ ﺳﻮﺍﻻﺕ ﻣﻄﺮﺡ ﺷﺪﻩ ﺩﺭ ﺻﻮﺭﺕ ﺗﻤﺮﻳﻦﻫﺎ )ﺩﺭ ﻗﺎﻟﺐ ﻳﮏ ﮔﺰﺍﺭﺵ ﺑﺎ ﻓﺮﻣﺖ ‪،(PDF‬‬
‫ﻧﻤﻮﺩﺍﺭﻫﺎ ﻭ ﺷﮑﻞﻫﺎﻱ ﺧﺮﻭﺟﻲ ‪ m‬ﻓﺎﻳﻞﻫﺎ ﻭ ‪ m‬ﻓﺎﻳﻠﻬﺎ ﻣﻲﺑﺎﺷﺪ‪ .‬ﻟﻄﻔﺎ ﺗﻤﺎﻣﻲ ﻓﺎﻳﻞﻫﺎ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻳﻚ ﻓﺎﻳﻞ ﻓﺸﺮﺩﻩ‪ ،‬ﮐﻪ ﻧﺎﻡ ﺁﻥ ﺩﺭ‬
‫ﻗﺎﻟﺐ ‪ MM_HW3_LastName_StudentID‬ﺑﺎﺷﺪ ﮐﻪ ﺩﺭ ﺁﻥ ﺑﻪ ﺟﺎﯼ ‪ LastName‬ﻧﺎﻡ ﺧﺎﻧﻮﺍﺩﮔﯽ ﺷﻤﺎ ﻭ ﺑﻪ ﺟﺎﯼ‬
‫‪ StudentID‬ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﻲ ﺷﻤﺎ ﻗﺮﺍﺭ ﻣﯽﮔﻴﺮﺩ‪ ،‬ﺑﻪ ﺁﺩﺭﺱ )‪ ([email protected]‬ﺑﻔﺮﺳﺘﻴﺪ‪ .‬ﻟﻄﻔﺎ ﻋﻨﻮﺍﻥ ‪ email‬ﺧﻮﺩ‬
‫ﺭﺍ ‪ MM-HW3‬ﻗﺮﺍﺭ ﺩﻫﻴﺪ‪ .‬ﻣﻬﻠﺖ ﺗﺤﻮﻳﻞ ﺧﺮﻭﺟﻲﻫﺎ ‪ ۱۳۹۰/۱/۲۸‬ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﺁﺷﻨﺎﻳﻲ ﺑﺎ ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ‬
‫‪ -١‬ﻣﻘﺪﻣﻪ‬
‫ﺗﺼﻮﻳﺮﻱ ﮐﻪ ﺑﺎ ﻳﻚ ﺍﺳﻜﻨﺮ ﻳﺎ ﺩﻭﺭﺑﻴﻦ ﺩﻳﺠﻴﺘﺎﻝ ﮔﺮﻓﺘﻪ ﺷﺪﻩ‪ ،‬ﻣﻤﻜﻦ ﺍﺳﺖ ﻛﺎﻧﺘﺮﺍﺳﺖ ﻣﻄﻠﻮﺏ ﻳﺎ ﻓﻮﻛﻮﺱ ﻣﻨﺎﺳﺐ ﺭﺍ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻳﺎ ﻣﻤﻜﻦ ﺍﺳﺖ‬
‫ﺗﺼﻮﻳﺮ ﺑﺎ ﻧﻮﻳﺰ ﻣﺨﻠﻮﻁ ﺷﺪﻩ ﺑﺎﺷﺪ ﻭ ﻧﻴﺎﺯ ﺑﻪ ﺗﻤﻴﺰ ﺷﺪﻥ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺩﺭ ﺑﻌﻀﻲ ﻣﻮﺍﺭﺩ ﺩﻳﮕﺮ‪ ،‬ﻣﻤﻜﻦ ﺍﺳﺖ ﻧﻴﺎﺯ ﺑﻪ ﺑﺰﺭﮒ ﻛﺮﺩﻥ ﺗﺼﻮﻳﺮ ﺑﺮﺍﻱ ﺩﻳﺪ‬
‫ﺭﺍﺣﺖﺗﺮ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺍﻧﻮﺍﻉ ﺍﺑﺰﺍﺭ ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ ﺑﺮﺍﻱ ﺍﻓﺰﺍﻳﺶ ﻛﻴﻔﻴﺖ ﻳﺎ ﺍﻳﺠﺎﺩ ﺑﻌﻀﻲ ﺟﻠﻮﻩ ﻫﺎ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﺩﺭ ﺍﻳﻦ ﺁﺯﻣﺎﻳﺶ‪ ،‬ﺷﻤﺎ‬
‫ﺑﻌﻀﻲ ﻋﻤﻠﻜﺮﺩﻫﺎﻱ ﭘﺎﻳﻪ ﺍﻱ ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ ﺭﺍ ﺁﺯﻣﺎﻳﺶ ﻛﺮﺩﻩ ﻭ ﻳﺎﺩ ﻣﻲ ﮔﻴﺮﻳﺪ‪.‬‬
‫‪ -٢‬ﺑﻬﺒﻮﺩ ﺗﺼﻮﻳﺮ‬
‫‪ -٢-١‬ﺑﻬﺒﻮﺩ ﻛﺎﻧﺘﺮﺍﺳﺖ‬
‫ﺑﻬﺒﻮﺩ ﻛﺎﻧﺘﺮﺍﺳﺖ ﺑﻪ ﺗﻐﻴﻴﺮ ﺳﻄﻮﺡ ﺗﺼﻮﻳﺮ ﻳﺎ ﻣﺘﻌﺎﺩﻝ ﻛﺮﺩﻥ ﺭﻧﮓ ﺁﻥ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ‪ ،‬ﺍﮔﺮ ﻳﻚ ﺗﺼﻮﻳﺮ ﺯﻳﺮ ﻧﻮﺭ ﺑﺴﻴﺎﺭ ﻛﻢ ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ‪،‬‬
‫ﻣﻤﻜﻦ ﺍﺳﺖ ﺗﺼﻮﻳﺮ ﺑﺴﻴﺎﺭ ﺗﻴﺮﻩ ﺑﻪ ﻧﻈﺮ ﺑﺮﺳﺪ‪ .‬ﺑﺎ ﺍﺑﺰﺍﺭ ﺑﻬﺒﻮﺩ ﻛﺎﻧﺘﺮﺍﺳﺖ ﻣﻨﺎﺳﺐ ﺷﻤﺎ ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﺍﻳﻦ ﺗﺼﻮﻳﺮ ﺭﺍ ﺩﺍﺭﺍﻱ ﻣﺤﺪﻭﺩﻩ ﺩﻳﻨﺎﻣﻴﻚ ﺑﺰﺭﮔﺘﺮﻱ‬
‫ﺑﻜﻨﻴﺪ ﻭ ﻣﺤﺪﻭﺩﻩ ﻛﻠﻲ ﺭﺍ ﺍﺯ ﺳﻔﻴﺪ ﺗﺎ ﺳﻴﺎﻩ ﺗﻮﺳﻌﻪ ﺑﺪﻫﻴﺪ‪.‬‬
‫ﻛﺎﻧﺘﺮﺍﺳﺖ ﺗﺼﻮﻳﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﺻﻮﺭﺕ ﺭﻳﺎﺿﻲ ﺑﻮﺳﻴﻠﻪ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺗﺼﻮﻳﺮ ﺍﻧﺪﺍﺯﻩ ﮔﻴﺮﻱ ﺷﻮﺩ‪ .‬ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺗﻌﺪﺍﺩ ﭘﻴﻜﺴﻞ ﻫﺎﻱ ﺩﺍﺭﺍﻱ ﻫﺮ ﺳﻄﺢ‬
‫ﺭﻧﮓ ﺑﻪ ﺧﺼﻮﺹ ﺭﺍ ﻣﻲ ﺷﻤﺎﺭﺩ‪ .‬ﺍﮔﺮ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺭﺍ ﺑﺎ ﺗﻌﺪﺍﺩ ﻛﻞ ﭘﻴﻜﺴﻞ ﻫﺎ ﻧﺮﻣﺎﻟﻴﺰﻩ ﻛﻨﻴﻢ‪ ،‬ﺁﻧﮕﺎﻩ ﺣﺎﺻﻞ‪ ،‬ﺗﻘﺮﻳﺒﻲ ﺍﺯ ﺗﺎﺑﻊ ﺟﺮﻡ ﺍﺣﺘﻤﺎﻝ ﺳﻄﻮﺡ‬
‫ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪ ،‬ﻳﻚ ﺗﺼﻮﻳﺮ ﺳﻴﺎﻩ ﺳﻔﻴﺪ ﺩﺍﺭﺍﻱ ﻳﻚ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺍﺳﺖ ﺩﺭ ﺣﺎﻟﻲ ﻛﻪ ﻳﻚ ﺗﺼﻮﻳﺮ ﺭﻧﮕﻲ ﻣﻲ ﺗﻮﺍﻧﺪ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﻫﺎﻱ ﻣﺠﺰﺍ ﺑﺮﺍﻱ ﻣﻮﻟﻔﻪ ﻫﺎﻱ‬
‫ﻣﺨﺘﻠﻒ ﺭﻧﮓ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﻳﻚ ﺗﺼﻮﻳﺮ ﺑﺎ ﻛﺎﻧﺘﺮﺍﺳﺖ ﺧﻮﺏ ﻳﻚ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺻﺎﻑ ﺧﻮﺍﻫﺪ ﺩﺍﺷﺖ ﻛﻪ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ ﺗﻤﺎﻡ ﺭﻧﮕﻬﺎﻱ ﻣﺨﺘﻠﻒ ﻳﺎ‬
‫ﺳﻄﻮﺡ ﺧﺎﻛﺴﺘﺮﻱ ﺗﻘﺮﻳﺒﹰﺎ ﺑﺎ ﺗﻌﺪﺍﺩ ﻣﺴﺎﻭﻱ ﭘﻴﻜﺴﻞ ﻫﺎ ﺩﺭ ﺗﺼﻮﻳﺮ ﺣﻀﻮﺭ ﺩﺍﺭﻧﺪ‪ .‬ﺍﺯ ﺳﻮﻱ ﺩﻳﮕﺮ‪ ،‬ﻳﻚ ﺗﺼﻮﻳﺮ ﺑﺎ ﻛﺎﻧﺘﺮﺍﺳﺖ ﭘﺎﻳﻴﻦ‪ ،‬ﭘﺨﺶ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ‬
‫ﺑﺴﻴﺎﺭ ﺑﺎﺭﻳﻜﻲ ﺧﻮﺍﻫﺪ ﺩﺍﺷﺖ ﺯﻳﺮﺍ ﺳﻄﻮﺡ ﺧﺎﻛﺴﺘﺮﻱ‪ /‬ﺭﻧﮕﻲ ﺁﻥ ﺩﺭ ﻳﻚ ﻣﺤﺪﻭﺩﻩ ﻛﻮﭼﻚ ﻣﺘﻤﺮﻛﺰ ﺍﺳﺖ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ‪ ،‬ﻳﻚ ﺗﺼﻮﻳﺮ ﺑﺴﻴﺎﺭ ﺳﻴﺎﻩ‪،‬‬
‫ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺑﺴﻴﺎﺭ ﺑﺎﺭﻳﻚ ﺣﻮﻝ ﺳﻄﻮﺡ ﭘﺎﻳﻴﻦ ﺧﻮﺍﻫﺪ ﺩﺍﺷﺖ‪.‬‬
‫ﻫﺪﻑ ﺑﻬﺒﻮﺩ ﻛﺎﻧﺘﺮﺍﺳﺖ‪ ،‬ﭘﺨﺶ ﺩﻭﺑﺎﺭﻩ ﺳﻄﻮﺡ ﺗﺼﻮﻳﺮ ﺑﻪ ﮔﻮﻧﻪ ﺍﻱ ﺍﺳﺖ ﻛﻪ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺗﺼﻮﻳﺮ ﺑﻬﺒﻮﺩ ﻳﺎﻓﺘﻪ ﺑﻪ ﺧﻮﺑﻲ ﮔﺴﺘﺮﺩﻩ ﺷﺪﻩ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﻃﻮﺭ‬
‫ﻛﻠﻲ‪ ،‬ﺑﻬﺒﻮﺩ ﻛﺎﻧﺘﺮﺍﺳﺖ‪ ،‬ﺑﺎ ﻳﻚ ﺗﺎﺑﻊ ﺗﻨﺎﻇﺮ ﭘﻴﻜﺴﻞ ﺑﻪ ﭘﻴﻜﺴﻞ ﻛﻪ ﻣﻘﺎﺩﻳﺮ ﭘﻴﻜﺴﻞ ﻫﺎ ﺭﺍ ﺍﺻﻼﺡ ﻣﻲ ﻛﻨﺪ‪ ،‬ﺻﻮﺭﺕ ﻣﻲ ﭘﺬﻳﺮﺩ‪ .‬ﺗﻨﺎﻇﺮ ﻓﻘﻂ ﺑﻪ ﺳﻄﺢ‬
‫ﺧﺎﻛﺴﺘﺮﻱ ﭘﻴﻜﺴﻞ ﻭﺍﺑﺴﺘﻪ ﺍﺳﺖ ﻣﺴﺘﻘﻞ ﺍﺯ ﺍﻳﻨﻜﻪ ﺩﻳﮕﺮ ﭘﻴﻜﺴﻞ ﻫﺎ ﭼﻪ ﺑﺎﺷﻨﺪ‪ .‬ﺑﺮﺍﻱ ﺣﻔﻆ ﭘﻴﻮﺳﺘﮕﻲ ﻭ ﺗﺮﺗﻴﺐ ﺳﻄﻮﺡ ﺍﺻﻠﻲ‪ ،‬ﺗﻨﺎﻇﺮ ﺑﺎﻳﺪ ﭘﻴﻮﺳﺘﻪ ﻭ‬
‫ﻏﻴﺮ ﻧﺰﻭﻟﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪ -٢-١-١‬ﻣﺴﺎﻭﻱ ﺳﺎﺯﻱ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ‬
‫ﻣﺴﺎﻭﻱ ﺳﺎﺯﻱ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺑﻪ ﻋﻤﻠﻲ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺗﺼﻮﻳﺮ ﺩﺍﺭﺍﻱ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺩﻟﺨﻮﺍﻩ ﺭﺍ ﺑﻪ ﺗﺼﻮﻳﺮﻱ ﺑﺎ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺻﺎﻑ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪.‬‬
‫ﺭﻭﺵ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺑﺮ ﻣﺒﻨﺎﻱ ﻧﺘﺎﻳﺞ ﺷﻨﺎﺧﺘﻪ ﺷﺪﻩ ﺗﺌﻮﺭﻱ ﺍﺣﺘﻤﺎﻻﺕ ﺍﺳﺘﻮﺍﺭ ﺍﺳﺖ‪.‬‬
‫ﻗﻀﻴﻪ‪ :‬ﺗﺎﺑﻊ ﺗﻮﺯﻳﻊ ﺟﻤﻌﻲ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺯ ﺭﻭﻱ ﺗﺎﺑﻊ ﺗﻮﺯﻳﻊ ﺍﺣﺘﻤﺎﻝ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻳﺪ‪:‬‬
‫ﺣﺎﻝ ﺍﮔﺮ ﻣﺎ ﺗﺒﺪﻳﻞ ﺗﺎﺑﻊ ﺗﻮﺯﻳﻊ ﺟﻤﻌﻲ ﺭﺍ ﺍﻧﺠﺎﻡ ﺑﺪﻫﻴﻢ‪ ،‬ﺗﺎﺑﻊ ﺣﺎﺻﻞ ﺩﺍﺭﺍﻱ ﺗﻮﺯﻳﻊ ﻳﻜﻨﻮﺍﺧﺖ ﺑﻴﻦ ‪ ٠‬ﻭ ‪ ١‬ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬
‫ﺍﮔﺮﭼﻪ ﻧﺘﻴﺠﻪ ﺑﺎﻻ ﺑﺮﺍﻱ ﻣﺘﻐﻴﺮﻫﺎﻱ ﺗﺼﺎﺩﻓﻲ ﭘﻴﻮﺳﺘﻪ ﻣﻄﻠﻘﹰﺎ ﺩﺭﺳﺖ ﺍﺳﺖ‪ ،‬ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﺮﺍﻱ ﻣﺘﻐﻴﺮﻫﺎﻱ ﮔﺴﺴﺘﻪ ﻧﻴﺰ ﺑﻪ ﻛﺎﺭ ﺑﺮﻭﺩ‪ .‬ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ‪pdf ،‬‬
‫ﺑﺎ ‪ pmf‬ﺟﺎﻳﮕﺰﻳﻦ ﻣﻲ ﺷﻮﺩ )ﻳﺎ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﻧﺮﻣﺎﻟﻴﺰﻩ ﺷﺪﻩ( ﻭ ‪ cdf‬ﺑﺎ ﺟﻤﻊ ﻣﻘﺎﺩﻳﺮ ‪ pmf‬ﺣﺎﺻﻞ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﻣﺴﺎﻭﻱ ﺳﺎﺯﻱ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺑﺮﺍﻱ ﻳﻚ ﺗﺼﻮﻳﺮ ﺩﺍﺩﻩ ﺷﺪﻩ‪ ،‬ﺍﺑﺘﺪﺍ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺁﻥ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﻛﻨﻴﻢ‪ .‬ﺳﭙﺲ ﺑﺮﺍﻱ ﻫﺮ ﻣﻘﺪﺍﺭ ﻣﻮﺟﻮﺩ ﺩﺭ‬
‫ﺗﺼﻮﻳﺮ ﺍﺻﻠﻲ‪ ،‬ﻣﻘﺎﺩﻳﺮ ﻧﺮﻣﺎﻟﻴﺰﻩ ﺷﺪﻩ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺭﺍ ﺍﺯ ﺳﻄﺢ ﺻﻔﺮ ﺗﺎ ﺁﻥ ﻣﻘﺪﺍﺭ ﺟﻤﻊ ﻣﻲ ﻛﻨﻴﻢ‪ .‬ﺟﻮﺍﺏ ﺑﻪ ﺩﺳﺖ ﺁﻣﺪﻩ‪ ،‬ﻫﻤﺎﻥ ﻣﻘﺪﺍﺭ ﺟﺪﻳﺪ ﭘﻴﻜﺴﻞ‬
‫ﺍﺳﺖ‪ .‬ﻭﻗﺘﻲ ﻗﺎﻋﺪﻩ ﺗﺒﺪﻳﻞ ﺑﺮﺍﻱ ﺗﻤﺎﻡ ﺳﻄﻮﺡ ﻣﻤﻜﻦ ﻣﺤﺎﺳﺒﻪ ﺷﺪ‪ ،‬ﻧﺘﻴﺠﻪ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﻳﻚ ﺟﺪﻭﻝ ﺫﺧﻴﺮﻩ ﺷﻮﺩ‪.‬‬
‫ﺷﻜﻞ ‪ ١‬ﻣﺜﺎﻟﻲ ﺍﺯ ﻣﺴﺎﻭﻱ ﺳﺎﺯﻱ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ ﻛﻪ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﺩﻣﻮﻱ ‪ imadjdemo.m ،matlab‬ﺑﻪ ﺩﺳﺖ ﺁﻣﺪﻩ ﺍﺳﺖ‪ .‬ﻣﻲ ﺗﻮﺍﻧﻴﺪ‬
‫ﺑﺒﻨﻴﺪ ﻛﻪ ﺗﺼﻮﻳﺮ ﺍﺻﻠﻲ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺑﺎﺭﻳﻜﻲ ﺩﺍﺭﺩ ﻭ ﺗﺼﻮﻳﺮ ﻣﺴﺎﻭﻱ ﺳﺎﺯﻱ ﺷﺪﻩ ﺗﻘﺮﻳﺒﹰﺎ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺻﺎﻓﻲ ﺑﺮ ﺭﻭﻱ ﻛﻞ ﻣﻘﺎﺩﻳﺮ ﺩﺍﺭﺩ‪.‬‬
‫ﻳﻚ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺻﺎﻑ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﻪ ﻳﻚ ﺗﺼﻮﻳﺮ ﺧﻮﺏ ﻣﻨﺠﺮ ﻧﺸﻮﺩ‪ .‬ﻫﻤﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻗﺒﻠﻲ ﺑﻪ ﺷﻤﺎ ﺍﺟﺎﺯﻩ ﻣﻲ ﺩﻫﺪ ﻛﻪ ﺗﺎﺑﻊ ﺗﻨﺎﻇﺮ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ‬
‫ﺩﺳﺘﻲ ﺗﻨﻈﻴﻢ ﻛﻨﻴﺪ )ﺑﻪ ﺟﺎﻱ ﺍﻳﻨﻜﻪ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺧﺮﻭﺟﻲ ﻫﻤﻴﺸﻪ ﺻﺎﻑ ﺑﺎﺷﺪ( ﺗﺎ ﻭﻗﺘﻲ ﻛﻪ ﺷﻤﺎ ﻧﺘﻴﺠﻪ ﺩﻟﺨﻮﺍﻩ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﻳﺪ‪ .‬ﺍﺑﺰﺍﺭ ﻣﻨﺎﺳﺒﻲ ﻫﻢ ﺑﻪ‬
‫ﻫﻤﻴﻦ ﻣﻨﻈﻮﺭ ﺩﺭ ﻓﻮﺗﻮﺷﺎﭖ ﻧﻴﺰ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪.‬‬
‫ﺷﮑﻞ‪ :۱‬ﻣﺜﺎﻟﻲ ﺍﺯ ﻣﺴﺎﻭﻱ ﺳﺎﺯﻱ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ‬
‫‪ -٢-٢‬ﺣﺬﻑ ﻧﻮﻳﺰ‬
‫ﺣﺬﻑ ﻧﻮﻳﺰ ﺑﻪ ﺣﺬﻑ ﺿﺮﺑﻪ ﻫﺎﻱ ﻧﺎﺧﻮﺍﺳﺘﻪ ﺩﺭ ﺗﺼﻮﻳﺮ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ‪ .‬ﺍﻳﻦ ﻛﺎﺭ ﻣﻌﻤﻮ ﹰﻻ ﺑﺎ ﻓﻴﻠﺘﺮ ﭘﺎﻳﻴﻦ ﮔﺬﺭ ﻗﺎﺑﻞ ﺍﻧﺠﺎﻡ ﺍﺳﺖ ﻛﻪ ﻣﻌﻤﻮ ﹰﻻ ﻣﻘﺪﺍﺭ ﻫﺮ‬
‫ﭘﻴﻜﺴﻞ ﺭﺍ ﺑﺎ ﻣﻘﺎﺩﻳﺮ ﻣﻴﺎﻧﮕﻴﻦ ﻳﺎ ﻣﺪ ﭘﻴﻜﺴﻞ ﻫﺎﻱ ﺍﻃﺮﺍﻑ ﺁﻥ ﺟﺎﻳﮕﺰﻳﻦ ﻣﻲ ﻛﻨﺪ‪ .‬ﻓﻴﻠﺘﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻨﺪﻩ ﺍﺯ ﻣﺪ ﺑﺮﺍﻱ ﻧﻮﻳﺰﻫﺎﻱ ﺿﺮﺑﻪ ﺍﻱ ﻣﻨﺎﺳﺐ ﺗﺮ ﺍﺳﺖ‬
‫ﺯﻳﺮﺍ ﻣﻘﺪﺍﺭ ﺑﻪ ﺩﺳﺖ ﺁﻣﺪﻩ ﺑﻪ ﭘﻴﻜﺴﻞ ﻣﺨﻠﻮﻁ ﺷﺪﻩ ﺑﺎ ﻧﻮﻳﺰ ﺑﺴﺘﮕﻲ ﻧﺪﺍﺭﺩ‪ .‬ﻓﻴﻠﺘﺮ ﻣﺘﻮﺳﻂ ﮔﻴﺮ ﺑﺮﺍﻱ ﻧﻮﻳﺰﻫﺎﻱ ﻣﺘﻐﻴﺮ ﭘﻴﻮﺳﺘﻪ ﻣﻨﺎﺳﺐ ﺍﺳﺖ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ‬
‫ﻣﺜﺎﻝ‪ ،‬ﻳﻚ ﻓﻴﻠﺘﺮ ﻣﻴﺎﻧﮕﻴﻦ ‪ ٣×٣‬ﺩﺭ ﻫﻤﺴﺎﻳﮕﻲ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﻓﻴﻠﺘﺮ ﺯﻳﺮ ﺍﺳﺖ‪:‬‬
‫ﺑﺮﺍﻱ ﻛﺎﺭﺍﻳﻲ ﺑﻬﺘﺮ ﻣﻤﻜﻦ ﺍﺳﺖ ﻓﻴﻠﺘﺮ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ‪:‬‬
‫ﺷﻜﻞ ‪ ،٢‬ﻧﺘﻴﺠﻪ ﺣﺬﻑ ﻧﻮﻳﺰ ﻧﻮﻉ ﻧﻤﻚ ﻭ ﻓﻠﻔﻞ ﺑﺎ ﻓﻴﻠﺘﺮ ﻣﻴﺎﻧﻪ ‪ ٣×٣‬ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ‪ .‬ﻧﺘﻴﺠﻪ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﺩﻣﻮﻱ ‪ (nrfiltdemo.m) MATLAB‬ﺑﻪ‬
‫ﺩﺳﺖ ﺁﻣﺪﻩ ﺍﺳﺖ‪ .‬ﺑﺎ ﻫﻤﺎﻥ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﻓﻴﻠﺘﺮﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺑﺎ ﺳﺎﻳﺰﻫﺎﻱ ﮔﻮﻧﺎﮔﻮﻥ ﻭ ﺑﺮﺍﻱ ﺍﻧﻮﺍﻉ ﻣﺨﺘﻠﻒ ﻧﻮﻳﺰ ﺭﺍ ﺍﻣﺘﺤﺎﻥ ﻛﻨﻴﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ ﻣﻲ‬
‫ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺗﺎﺑﻊ ‪ conv2‬ﺑﺮﺍﻱ ﺑﻪ ﻛﺎﺭ ﺑﺮﺩﻥ ﻫﺮ ﻓﻴﻠﺘﺮ ﺧﺎﺻﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ‪.‬‬
‫ﺷﮑﻞ‪ :۲‬ﺣﺬﻑ ﻧﻮﻳﺰ ﻧﻮﻉ ﻧﻤﻚ ﻭ ﻓﻠﻔﻞ ﺑﺎ ﻓﻴﻠﺘﺮ ﻣﻴﺎﻧﻪ ‪٣×٣‬‬
‫ﻣﺴﺎﻟﻪ ﻓﻴﻠﺘﺮﻫﺎﻱ ﻣﻴﺎﻧﻴﻦ ﮔﻴﺮ ﻳﺎ ﻣﺪﮔﻴﺮ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻣﻤﻜﻦ ﺍﺳﺖ ﺗﺼﻮﻳﺮ ﺭﺍ ﺩﺭ ﻟﺒﻪ ﻫﺎ ﺗﺎﺭ ﻛﻨﺪ‪ .‬ﺯﻣﻴﻨﻪ ﮔﺴﺘﺮﺵ ﺗﻜﻨﻴﻚ ﻫﺎﻱ ﺣﺬﻑ ﻧﻮﻳﺰ‪ ،‬ﺷﺎﻣﻞ‬
‫ﺣﺬﻑ ﻣﻮﺛﺮ ﻧﻮﻳﺰ ﺑﺪﻭﻥ ﺗﺎﺭ ﻛﺮﺩﻥ ﻟﺒﻪ ﻫﺎ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﺍﻳﻦ ﮔﻮﻧﻪ ﻓﻴﻠﺘﺮﻫﺎ ﻣﻌﻤﻮ ﹰﻻ ﻓﻴﻠﺘﺮﻫﺎﻱ ﻫﻤﻮﺍﺭ ﻛﻨﻨﺪﻩ ﺣﻔﻆ ﻛﻨﻨﺪﻩ ﻟﺒﻪ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫‪ -٢-٣‬ﺗﻤﻴﺰ ﻛﺮﺩﻥ ﻟﺒﻪ ﻫﺎ‬
‫ﻟﺒﻪ ﻫﺎ ﻓﺮﻛﺎﻧﺲ ﻫﺎﻱ ﺑﺎﻻﻱ ﺗﺼﻮﻳﺮ ﻫﺴﺘﻨﺪ ﺩﺭ ﺣﺎﻟﻲ ﻛﻪ ﻧﻮﺍﺣﻲ ﺻﺎﻑ ﻧﻮﺍﺣﻲ ﻓﺮﻛﺎﻧﺲ ﭘﺎﻳﻴﻦ ﺗﺼﻮﻳﺮ ﻫﺴﺘﻨﺪ‪ .‬ﺑﺮﺍﻱ ﺑﻬﺒﻮﺩ ﻟﺒﻪ ﻫﺎ‪ ،‬ﻳﻚ ﺭﺍﻫﺒﺮﺩ‪،‬‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻓﻴﻠﺘﺮﻫﺎﻱ ﺗﺄﻛﻴﺪ ﻛﻨﻨﺪﻩ ﺑﻪ ﻓﺮﻛﺎﻧﺲ ﻫﺎﻱ ﺑﺎﻻ ﺍﺳﺖ ﻛﻪ ﻣﻮﻟﻔﻪ ﻫﺎﻱ ﻓﺮﻛﺎﻧﺲ ﭘﺎﻳﻴﻦ ﺭﺍ ﻧﮕﻪ ﺩﺍﺭﺩ ﻭﻟﻲ ﻣﻮﻟﻔﻪ ﻫﺎﻱ ﻓﺮﻛﺎﻧﺲ ﺑﺎﻻ ﺭﺍ ﺗﻘﻮﻳﺖ ﻛﻨﺪ‪.‬‬
‫‪ -٢-٤‬ﺁﺷﻜﺎﺭﺳﺎﺯﻱ ﻟﺒﻪ ﻫﺎ‬
‫ﻟﺒﻪ ﻫﺎﻱ ﻳﻚ ﺗﺼﻮﻳﺮ ﺳﺎﺧﺘﺎﺭ ﺍﺷﻴﺎﺀ ﺁﻥ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ‪ .‬ﺁﺷﻜﺎﺭﺳﺎﺯﻱ ﻟﺒﻪ ﻳﻚ ﻣﺮﺣﻠﻪ ﭘﻴﺶ ﭘﺮﺩﺍﺯﺵ ﻣﻬﻢ ﺑﺮﺍﻱ ﺁﺷﻜﺎﺭﺳﺎﺯﻱ ﺷﻲﺀ ﻭ ﺷﻨﺎﺳﺎﻳﻲ‬
‫ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﺧﺎﻃﺮ ﺍﻳﻨﻜﻪ ﻟﺒﻪ ﻫﺎ ﺿﺮﻭﺭﺗﹰﺎ ﻣﻮﻟﻔﻪ ﻫﺎﻱ ﻓﺮﻛﺎﻧﺲ ﺑﺎﻻﻱ ﻳﻚ ﺗﺼﻮﻳﺮ ﻫﺴﺘﻨﺪ‪ ،‬ﺗﺸﺨﻴﺺ ﻟﺒﻪ ﻣﻌﻤﻮ ﹰﻻ ﺑﺎ ﺑﻪ ﻛﺎﺭﮔﻴﺮﻱ ﻓﻴﻠﺘﺮﻫﺎﻱ ﻓﺮﻛﺎﻧﺲ ﺑﺎﻻ‬
‫ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﻣﻮﻟﻔﻪ ﻫﺎﻱ ﻓﺮﻛﺎﻧﺲ ﭘﺎﻳﻴﻦ ﺭﺍ ﺟﺬﺏ ﻣﻲ ﻛﻨﺪ ﻭ ﺳﭙﺲ ﻳﻚ ﺁﺳﺘﺎﻧﻪ ﺑﻪ ﻛﺎﺭ ﻣﻲ ﺑﺮﺩ‪ .‬ﻳﻚ ﺁﺷﻜﺎﺭﺳﺎﺯ ﻟﺒﻪ ﭘﺮﻃﺮﻓﺪﺍﺭ‪ ،‬ﻋﻤﻠﮕﺮ ‪sobel‬‬
‫ﺍﺳﺖ ﻛﻪ ﺍﺯ ﺩﻭ ﻓﻴﻠﺘﺮ ﺯﻳﺮ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ‪:‬‬
‫ﻓﻴﻠﺘﺮﻫﺎﻱ ﺑﺎﻻ ﺩﻭ ﻓﻴﻠﺘﺮ ﺑﺎﻻﮔﺬﺭ ﺩﺭ ﺟﻬﺖ ﻫﺎﻱ ﺍﻓﻘﻲ ﻭ ﻋﻤﻮﺩﻱ ﻫﺴﺘﻨﺪ‪ .‬ﺑﺮﺍﻱ ﺁﺷﻜﺎﺭﺳﺎﺯﻱ ﻳﻚ ﻟﺒﻪ ﺍﻳﻦ ﺩﻭ ﻓﻴﻠﺘﺮ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﻳﻚ ﺗﺼﻮﻳﺮ ﺑﻪ ﻛﺎﺭ‬
‫ﻣﻲ ﺑﺮﻳﻢ ﻛﻪ ﻋﺪﺩﻱ ﻧﻤﺎﻳﺎﻧﮕﺮ ﻟﺒﻪ ﺍﻓﻘﻲ ﻭ ﻋﻤﻮﺩﻱ ﺑﺮﺍﻱ ﻫﺮ ﭘﻴﻜﺴﻞ ﻣﻲ ﺩﻫﺪ‪ .‬ﺍﮔﺮ ﺗﻨﻬﺎ ﻋﻼﻗﻤﻨﺪ ﺑﻪ ﺁﺷﻜﺎﺭﺳﺎﺯﻱ ﻟﺒﻪ ﻫﺎﻱ ﺍﻓﻘﻲ ﻫﺴﺘﻴﺪ ﻋﺪﺩ ﻧﻤﺎﻳﺎﻧﮕﺮ‬
‫ﻟﺒﻪ ﺍﻓﻘﻲ ﺭﺍ ﺑﺎ ﺳﻄﺢ ﺁﺳﺘﺎﻧﻪ ﻣﻘﺎﻳﺴﻪ ﻣﻴﻜﻨﻴﺪ ﻭ ﺁﻥ ﭘﻴﻜﺴﻞ ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﻟﺒﻪ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﺪ‪ .‬ﺍﮔﺮ ﺑﻪ ﻟﺒﻪ ﻫﺎ ﺩﺭ ﺗﻤﺎﻡ ﺟﻬﺎﺕ ﻋﻼﻗﻤﻨﺪﻳﺪ ﺍﻧﺪﺍﺯﻩ ﮔﺮﺍﺩﻳﺎﻥ‬
‫ﺭﺍ ﺑﺎ‬
‫ﺣﺴﺎﺏ ﻛﺮﺩﻩ ﻭ ﻳﻚ ﭘﻴﻜﺴﻞ ﺭﺍ ﻟﺒﻪ ﻣﺤﺴﻮﺏ ﻣﻲ ﻛﻨﻴﺪ ﺍﮔﺮ‬
‫‪ .‬ﺷﻜﻞ ‪ ٣‬ﻳﻚ ﻣﺜﺎﻝ ﺍﺯ ﺁﺷﻜﺎﺭﺳﺎﺯﻱ ﻟﺒﻪ ﺑﻪ‬
‫ﺩﺳﺖ ﺁﻣﺪﻩ ﺑﺎ ﻋﻤﻠﮕﺮ ‪ sobel‬ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ‪ .‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﺮﻧﺎﻣﺔ ﺩﻣﻮﻱ ‪ edgedemo.m‬ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﺗﺄﺛﻴﺮ ﺁﺷﻜﺎﺭﺳﺎﺯﻫﺎﻱ ﻟﺒﻪ ﻣﺨﺘﻠﻒ ﺭﺍ‬
‫ﺑﺮﺭﺳﻲ ﻛﻨﻴﺪ‪.‬‬
‫ﺷﮑﻞ‪ :۳‬ﺗﺸﺨﻴﺺ ﻟﺒﻪ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻋﻤﻠﮕﺮ ‪Sobel‬‬
‫‪ -٣‬ﺗﻐﻴﻴﺮ ﺍﻧﺪﺍﺯﻩ ﺗﺼﻮﻳﺮ‬
‫ﺩﺭ ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ ﻣﻮﺍﺭﺩ ﺯﻳﺎﺩﻱ ﭘﻴﺶ ﻣﻲ ﺁﻳﺪ ﻛﻪ ﻻﺯﻡ ﺍﺳﺖ ﻧﺮﺥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﺗﺼﻮﻳﺮ ﺗﻐﻴﻴﺮ ﻛﻨﺪ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻣﻤﻜﻦ ﺍﺳﺖ ﺗﺼﻮﻳﺮ ﺑﺮﺍﻱ‬
‫ﺑﻬﺒﻮﺩ ﻧﻤﺎﻳﺶ‪ ،‬ﻛﻮﭼﻚ ﺷﻮﺩ‪ .‬ﻳﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺗﺼﻮﻳﺮ ﻧﻴﺎﺯ ﺑﻪ ﭼﺮﺧﻴﺪﻥ ﺩﺭ ﺟﻬﺎﺗﻲ ﺑﻪ ﻏﻴﺮ ﻣﻀﺎﺭﺏ ‪ ٩٠‬ﺩﺭﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺣﺴﮕﺮ ﺍﺯ ﺭﺍﻩ‬
‫ﺩﻭﺭ ﻧﻴﺎﺯ ﺑﻪ ﺗﻐﻴﻴﺮ ﻧﺮﺥ ﺗﺼﻮﻳﺮ ﺑﺮﺍﻱ ﺣﺬﻑ ﺍﻋﻮﺟﺎﺝ ﻫﺎﻱ ﺟﻮﻱ ﻳﺎ ﺁﺭﺗﻴﻔﻜﺖﻫﺎﻱ ﻧﺎﺷﻲ ﺍﺯ ﭼﺮﺧﺶ ﺯﻣﻴﻦ ﺩﺍﺭﻧﺪ‪.‬‬
‫ﺗﻐﻴﻴﺮ ﻧﺮﺥ‪ ،‬ﻫﻤﭽﻨﻴﻦ‪ ،‬ﻭﺳﻴﻠﻪ ﺍﻱ ﺑﺮﺍﻱ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩﻥ ﺛﺒﺖ ﺯﻳﺮ ﭘﻴﻜﺴﻠﻲ ﺭﺍ ﺍﺯ ﺗﺼﺎﻭﻳﺮ ﺣﺴﮕﺮﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺑﺎ ﺩﻧﺒﺎﻟﻪ ﺗﺼﺎﻭﻳﺮ ﺯﻣﺎﻧﻲ‪ ،‬ﻓﺮﺍﻫﻢ ﻣﻲ‬
‫ﻛﻨﺪ‪.‬‬
‫‪ -٣-١‬ﺍﺻﻮﻝ ﺗﻐﻴﻴﺮ ﻧﺮﺥ ﺗﺼﻮﻳﺮ‬
‫ﺩﺭ ﺁﺯﻣﺎﻳﺶ ‪ ،٢‬ﺍﺻﻮﻝ ﺗﻐﻴﻴﺮ ﻧﺮﺥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﻳﻚ ﺳﻴﮕﻨﺎﻝ ﺻﺤﺒﺖ ﻳﺎ ﺻﺪﺍ ﻛﻪ ﻳﻚ ﺑﻌﺪﻱ ﺑﻮﺩ ﺭﺍ ﻳﺎﺩ ﮔﺮﻓﺘﻴﺪ‪ .‬ﺗﻐﻴﻴﺮ ﻧﺮﺥ ﺗﺼﻮﻳﺮ‪ ،‬ﻳﻚ ﻣﺴﺄﻟﻪ‬
‫ﺗﺒﺪﻳﻞ ﻧﺮﺥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﺩﺭ ﺩﻭ ﺑﻌﺪ ﺍﺳﺖ‪ .‬ﺑﺰﺭﮒ ﻛﺮﺩﻥ ﺗﺼﻮﻳﺮ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ‪ up-sampling‬ﻭ ﻛﻮﭼﻚ ﻛﺮﺩﻥ ﺗﺼﻮﻳﺮ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ‪down-‬‬
‫‪ sampling‬ﺍﺳﺖ‪ .‬ﺑﻪ ﻳﺎﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﺩﺭ ﻳﻚ ﺑﻌﺪ‪ up-sampling ،‬ﺑﺎ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﺻﻔﺮ ﺑﻴﻦ ﻧﻤﻮﻧﻪ ﻫﺎﻱ ﻣﻌﻠﻮﻡ ﻭ ﺑﻪ ﻛﺎﺭﮔﻴﺮﻱ ﻓﻴﻠﺘﺮ ﺩﺭﻭﻧﻴﺎﺑﻲ‬
‫ﺑﺮﺍﻱ ﺗﺨﻤﻴﻦ ﻧﻘﺎﻁ ﻧﺎﻣﻌﻠﻮﻡ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﺪ‪ .‬ﺑﺮﺍﻱ ‪ down-sampling‬ﺑﻪ ﻣﻨﻈﻮﺭ ﺍﺟﺘﻨﺎﺏ ﺍﺯ ﺍﻟﻴﺎﺳﻴﻨﮓ ﺑﺎﻳﺪ ﭘﻴﺶ ﻓﻴﻠﺘﺮ ﺑﺮ ﺭﻭﻱ ﺗﺼﻮﻳﺮ ﺍﺻﻠﻲ ﺑﻪ ﻛﺎﺭ‬
‫ﺑﺮﺩﻩ ﺷﻮﺩ ﺗﺎ ﻓﺮﻛﺎﻧﺲ ﻫﺎﻱ ﺑﺎﻻﺗﺮ ﺍﺯ ﻧﺼﻒ ﻧﺮﺥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﺟﺪﻳﺪ ﺭﺍ ﺣﺬﻑ ﻛﻨﺪ‪ .‬ﺍﻳﻦ ﺍﺻﻮﻝ ﺑﺮﺍﻱ ﺣﺎﻟﺖ ﺩﻭﺑﻌﺪﻱ ﻫﻢ ﻛﺎﺭﺑﺮﺩ ﺩﺍﺭﺩ‪ .‬ﻣﻲ ﺗﻮﺍﻥ‬
‫ﻣﺴﺘﻘﻴﻤﹰﺎ ﻳﻚ ﻓﻴﻠﺘﺮ ‪ ٢‬ﺑﻌﺪﻱ ﺑﻪ ﻛﺎﺭ ﺑﺮﺩ ﻳﺎ ﻣﻲ ﺗﻮﺍﻥ ﺍﺑﺘﺪﺍ ﻳﻚ ﻓﻴﻠﺘﺮ ﻳﻚ ﺑﻌﺪﻱ ﺑﺮ ﺭﻭﻱ ﺳﻄﺮﻫﺎ ﻭ ﺳﭙﺲ ﺑﺮ ﺭﻭﻱ ﺳﺘﻮﻥ ﻫﺎ ﺑﻪ ﻛﺎﺭ ﺑﺮﺩ‪ .‬ﻣﻮﺭﺩ ﺍﺧﻴﺮ‪،‬‬
‫ﭘﺮﺩﺍﺯﺵ ﻣﺠﺰﺍ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺍﺯ ﻧﻈﺮ ﻣﺤﺎﺳﺒﺎﺗﻲ ﺍﺯ ﭘﺮﺩﺍﺯﺵ ‪ ٢‬ﺑﻌﺪﻱ ﻣﺴﺘﻘﻴﻢ ﻛﺎﺭﺍﺗﺮ ﺍﺳﺖ‪.‬‬
‫ﻫﻤﺎﻥ ﻃﻮﺭ ﻛﻪ ﺩﺭ ﺁﺯﻣﺎﻳﺶ ‪ ٢‬ﻳﺎﺩ ﮔﺮﻓﺘﻴﺪ‪ ،‬ﭘﻴﺶ ﻓﻴﻠﺘﺮ ﻭ ﻓﻴﻠﺘﺮﻫﺎﻱ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺑﺎﻳﺪ ﻓﻴﻠﺘﺮﻫﺎﻱ ﭘﺎﻳﻴﻦ ﮔﺬﺭ ﺍﻳﺪﻩ ﺁﻝ ﺑﺎﺷﻨﺪ‪ .‬ﻣﺘﺄﺳﻔﺎﻧﻪ ﺍﻳﻦ ﻓﻴﻠﺘﺮﻫﺎ ﻗﺎﺑﻞ‬
‫ﺗﺤﻘﻖ ﻧﻴﺴﺘﻨﺪ ﺯﻳﺮﺍ ﻧﻤﻮﻧﻪ ﻫﺎﻱ ﻧﺎﻣﺤﺪﻭﺩﻱ ﺭﺍ ﺩﺭ ﺑﺮ ﻣﻲﮔﻴﺮﻧﺪ‪ .‬ﺩﺭ ﻋﻤﻞ ﻓﻴﻠﺘﺮﻫﺎﻱ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺑﺮﺍﻱ ﺗﻐﻴﻴﺮ ﻧﺮﺥ ﺗﺼﻮﻳﺮ ﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﺗﺮ ﺍﺯ ﺭﺍﻩ ﺣﻞ‬
‫ﻫﺎﻱ ﺗﺌﻮﺭﻱ ﻫﺴﺘﻨﺪ‪ .‬ﺩﺭ ﺍﺩﺍﻣﻪ ﺗﻌﺪﺍﺩﻱ ﺭﻭﺵ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﺤﺒﻮﺏ ﺭﺍ ﺗﻮﺿﻴﺢ ﻣﻲ ﺩﻫﻴﻢ‪.‬‬
‫ﺑﻪ ﻃﻮﺭ ﻛﻠﻲ‪ ،‬ﻳﻚ ﺭﻭﺵ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻘﺎﺩﻳﺮ ﺟﺪﻳﺪﻱ ﺭﺍ ﺑﺮ ﺍﺳﺎﺱ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﭘﻴﻜﺴﻞ ﻫﺎﻱ ﻭﺭﻭﺩﻱ ﺗﻮﻟﻴﺪ ﻣﻲ ﻛﻨﺪ‪ .‬ﺗﻌﺪﺍﺩ ﭘﻴﻜﺴﻞ ﻫﺎﻱ ﻭﺭﻭﺩﻱ‬
‫ﻭ ﺳﻬﻢ ﺁﻧﻬﺎ ﺩﺭ ﻣﻘﺪﺍﺭ ﭘﻴﻜﺴﻞ ﺟﺪﻳﺪ ﻓﻴﻠﺘﺮ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺭﺍ ﻣﻌﻴﻦ ﻣﻲ ﻛﻨﺪ‪ .‬ﻳﻚ ﻋﺎﻣﻞ ﺩﺭ ﺗﻌﻴﻴﻦ ﻓﻴﻠﺘﺮ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻨﺎﺳﺐ‪ ،‬ﻣﻘﺪﺍﺭ ﺯﻣﺎﻥ ﻣﻮﺭﺩﻧﻴﺎﺯ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ‬
‫ﺧﺮﻭﺟﻲ ﺍﺳﺖ‪ .‬ﻫﺮ ﭼﻪ ﺗﺎﺑﻊ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺳﺎﺩﻩ ﺗﺮ‪ ،‬ﻣﻘﺪﺍﺭ ﺯﻣﺎﻥ ﻣﻮﺭﺩﻧﻴﺎﺯ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﺧﺮﻭﺟﻲ ﻛﻢ ﺗﺮ ﺍﺳﺖ‪ .‬ﻫﺮ ﭼﻪ ﺗﺎﺑﻊ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺑﻪ ﺗﺎﺑﻊ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺍﻳﺪﻩ‬
‫ﺁﻝ ﭘﻴﭽﻴﺪﻩ ﺗﺮ ﻣﻲ ﺷﻮﺩ ﺑﻪ ﺯﻣﺎﻥ ﭘﺮﺩﺍﺯﺵ ﺑﻴﺸﺘﺮﻱ ﻧﻴﺎﺯ ﺩﺍﺭﺩ‪ .‬ﺑﺮﺍﻱ ﺑﻴﺸﺘﺮ ﻛﺎﺭﺑﺮﺩﻫﺎ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺑﺎ ﺍﺳﭙﻼﻳﻦ ﻣﻜﻌﺒﻲ ﻛﻔﺎﻳﺖ ﻣﻲ ﻛﻨﺪ‪.‬‬
‫‪ -٣-٢‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﻧﺰﺩﻳﻜﺘﺮﻳﻦ ﻫﻤﺴﺎﻳﻪ )ﻳﺎ ﺗﻜﺮﺍﺭ ﭘﻴﻜﺴﻞ(‬
‫ﺩﺭ ﺍﻳﻦ ﺭﻭﺵ‪ ،‬ﭘﻴﻜﺴﻞ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺷﺪﻩ ﺟﺪﻳﺪ ﻣﻘﺪﺍﺭ ﻧﺰﺩﻳﻜﺘﺮﻳﻦ ﭘﻴﻜﺴﻞ ﺍﺯ ﺗﺼﻮﻳﺮ ﻭﺭﻭﺩﻱ ﺭﺍ ﻣﻲﮔﻴﺮﺩﻭ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﺷﻮﺩ ﻛﻪ ‪M‬‬
‫ﻓﺎﻛﺘﻮﺭ ﺯﻭﻣﻴﻨﮓ ﻳﺎ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺍﺳﺖ )ﺷﻜﻞ ‪:(٤‬‬
‫ﺍﻳﻦ ﺭﻭﺵ ﺧﻴﻠﻲ ﺳﺎﺩﻩ ﺍﺳﺖ‪ .‬ﺍﮔﺮ ‪ M‬ﺑﺰﺭﮒ ﺑﺎﺷﺪ ﺗﺼﻮﻳﺮ ﺯﻭﻡ ﺷﺪﻩ ﺩﺍﺭﺍﻱ ﺍﺛﺮ ﺑﻠﻮﻛﻴﻨﮓ ﺷﺪﻳﺪ ﺍﺳﺖ‪.‬‬
‫ﺷﮑﻞ ‪ :۴‬ﻋﻤﻞ ﺩﺭﻭﻧﻴﺎﺑﻲ‬
‫‪ -٣-٣‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ‬
‫ﺑﺎ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ‪ ،‬ﻣﻘﺪﺍﺭ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺷﺪﻩ ﺟﺪﻳﺪ‪ ،‬ﺟﻤﻊ ﻭﺯﻥ ﺩﺍﺭ ﭼﻬﺎﺭ ﻫﻤﺴﺎﻳﮕﻲ ﻛﻨﺎﺭﻱ ﭘﻴﻜﺴﻞ ﺍﺳﺖ‪ .‬ﻭﺯﻥ ﻫﺎ ﺑﻪ ﻃﻮﺭ ﻣﻌﻜﻮﺱ ﺑﺎ ﻓﺎﺻﻠﻪ ﺍﺯ‬
‫ﻣﻜﺎﻥ ﻫﺮ ﭘﻴﻜﺴﻞ ﻣﺘﻨﺎﺳﺐ ﻫﺴﺘﻨﺪ‪ .‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ‪ ،‬ﺗﺼﻮﻳﺮ ﺑﺴﻴﺎﺭ ﻫﻤﻮﺍﺭﺗﺮﻱ ﺍﺯ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻧﺰﺩﻳﻜﺘﺮﻳﻦ ﻫﻤﺴﺎﻳﮕﻲ ﺗﻮﻟﻴﺪ ﻣﻲ ﻛﻨﺪ‪ .‬ﺍﮔﺮ ﭼﻪ ﻧﻴﺎﺯ ﺑﻪ ﺯﻣﺎﻥ‬
‫ﭘﺮﺩﺍﺯﺵ ﺑﻴﺸﺘﺮﻱ ﻧﺴﺒﺖ ﺑﻪ ﺭﻭﺵ ﻗﺒﻠﻲ ﺩﺍﺭﺩ‪ ،‬ﻛﻴﻔﻴﺖ ﻧﻬﺎﻳﻲ ﺗﺼﻮﻳﺮ ﺧﺮﻭﺟﻲ ﺑﻪ ﺷﺪﺕ ﺑﻬﺘﺮ ﻣﻲ ﺷﻮﺩ‪ .‬ﺍﺯ ﻧﻈﺮ ﺭﻳﺎﺿﻲ‪ ،‬ﺍﻟﮕﻮﺭﻳﺘﻢ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ ﺑﺎ‬
‫ﻣﻌﺎﺩﻟﻪ ﺯﻳﺮ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ )ﺷﻜﻞ ‪ ٤-b‬ﺭﺍ ﺑﺒﻴﻨﻴﺪ(‪.‬‬
‫ﺩﺭ ﻣﻌﺎﺩﻟﻪ ﺑﺎﻻ ‪ ٤‬ﺿﺮﺏ ﺑﺮﺍﻱ ﻫﺮ ﻧﻤﻮﻧﻪ ﻧﻴﺎﺯ ﺍﺳﺖ‪ .‬ﺑﺮﺍﻱ ﻛﺎﻫﺶ ﻣﺤﺎﺳﺒﺎﺕ‪ ،‬ﻣﻲ ﺗﻮﺍﻥ ﻫﻤﺎﻥ ﻣﺤﺎﺳﺒﺎﺕ ﺭﺍ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎﻱ ﺟﺪﺍﭘﺬﻳﺮ ﺍﻧﺠﺎﻡ ﺩﺍﺩ‪.‬‬
‫ﺩﺭ ﺍﺑﺘﺪﺍ‪ ،‬ﺑﺮﺍﻱ ﻫﺮ ﺭﺩﻳﻒ ﺩﺭ ﺗﺼﻮﻳﺮ ﺍﺻﻠﻲ ﺑﻪ ﺻﻮﺭﺕ ﺍﻓﻘﻲ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺑﺎ ﻓﺎﻛﺘﻮﺭ ‪ M‬ﺍﻧﺠﺎﻡ ﻣﻲﺷﻮﺩ‪:‬‬
‫ﺳﭙﺲ ﺑﺮﺍﻱ ﻫﺮ ﺭﺩﻳﻒ ﺩﺭ ﺗﺼﻮﻳﺮﺣﺎﺻﻞ ﺑﻪ ﺻﻮﺭﺕ ﻋﻤﻮﺩﻱ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺑﺎ ﻓﺎﻛﺘﻮﺭ ‪ M‬ﺍﻧﺠﺎﻡ ﻣﻲﺷﻮﺩ‪:‬‬
‫ﺷﻤﺎ ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ ﻛﻪ ﭼﻨﺪ ﻋﻤﻞ ﺑﺮﺍﻱ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻳﻚ ﺗﺼﻮﻳﺮ ﺑﺎ ﺭﻭﺵ ﻣﺴﺘﻘﻴﻢ ﻳﺎ ﺟﺪﺍﭘﺬﻳﺮ ﻧﻴﺎﺯ ﺍﺳﺖ‪.‬‬
‫‪ -٣-٤‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﺍﺳﭙﻼﻳﻦ ﻣﻜﻌﺒﻲ‬
‫ﺑﺎ ﺍﻳﻦ ﺭﻭﺵ‪ ،‬ﻣﻘﺪﺍﺭ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺷﺪﻩ ﺍﺯ ﻳﻚ ﭘﻨﺠﺮﻩ ‪ ٤×٤‬ﺩﺭ ﺗﺼﻮﻳﺮ ﻭﺭﻭﺩﻱ ﺑﻪ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ‪ .‬ﻧﺘﻴﺠﺘﺎﹰ‪ ،‬ﺗﺼﻮﻳﺮ ﺧﺮﻭﺟﻲ ﭘﻴﻮﺳﺘﻪ ﺗﺮ ﻭ ﻫﻤﻮﺍﺭﺗﺮ‬
‫ﺍﺳﺖ‪ .‬ﺧﻮﺷﺒﺨﺘﺎﻧﻪ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻜﻌﺒﻲ ﻳﻚ ﺗﺎﺑﻊ ﺟﺪﺍﭘﺬﻳﺮ ﺍﺳﺖ ﺑﻨﺎﺑﺮﺍﻳﻦ ﻳﻚ ﺗﺎﺑﻊ ﻳﻚ ﺑﻌﺪﻱ ﻣﻲ ﺗﻮﺍﻧﺪ ﭘﺸﺖ ﺳﺮ ﻫﻢ ﺩﺭ ﺩﻭ ﺟﻬﺖ ﻋﻤﻮﺩﻱ ﻭ ﺍﻓﻘﻲ ﺑﻪ‬
‫ﻛﺎﺭ ﺑﺮﻭﺩ‪ .‬ﻓﺮﻣﻮﻝ ﺯﻳﺮ ﻓﻴﻠﺘﺮ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻜﻌﺒﻲ ﺩﻭﺑﻌﺪﻱ ﺭﺍ ﺷﺮﺡ ﻣﻲ ﺩﻫﺪ‪ .‬ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﺍﻳﻦ ﻛﺎﺭ ﺩﺭ ﺩﻭ ﻣﺮﺣﻠﻪ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ‪ ،‬ﺩﺭ ﺍﺑﺘﺪﺍ ﺟﻬﺖ ‪ x‬ﻭ‬
‫ﺳﭙﺲ ﺟﻬﺖ ‪. y‬‬
‫‪ -٣-٥‬ﻣﻘﺎﻳﺴﻪ ﺭﻭﺵ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪MATLAB‬‬
‫ﺟﻌﺒﻪ ﺍﺑﺰﺍﺭ ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ ‪ MATLAB‬ﺳﻪ ﺭﻭﺵ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺭﺍ ﻣﻬﻴﺎ ﻣﻲ ﻛﻨﺪ‪:‬‬
‫• ﻧﺰﺩﻳﻜﺘﺮﻳﻦ ﻫﻤﺴﺎﻳﻪ‬
‫• ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ‬
‫• ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻜﻌﺒﻲ‬
‫ﻼ ﺑﺤﺚ ﻛﺮﺩﻳﻢ‪ ،‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﻧﺰﺩﻳﻜﺘﺮﻳﻦ ﻫﻤﺴﺎﻳﮕﻲ ﻳﻚ ﺳﻄﺢ ﺛﺎﺑﺖ ﻗﻄﻌﻪ ﺍﻱ ﺭﺍ ﺑﻴﻦ ﻣﻘﺎﺩﻳﺮ ﭘﻴﻜﺴﻞ ﻫﺎ ﺟﺎﻱ ﻣﻲ ﺩﻫﺪ‪ .‬ﻣﻘﺪﺍﺭ‬
‫ﻫﻤﺎﻥ ﻃﻮﺭ ﻛﻪ ﻗﺒ ﹰ‬
‫ﭘﻴﻜﺴﻞ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺷﺪﻩ‪ ،‬ﻫﻤﺎﻥ ﻣﻘﺪﺍﺭ ﻧﺰﺩﻳﻜﺘﺮﻳﻦ ﭘﻴﻜﺴﻞ ﺍﺳﺖ‪ .‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ ﻳﻚ ﺳﻄﺢ ﺧﻄﻲ ﺭﺍ ﺑﻴﻦ ﻣﻘﺎﺩﻳﺮ ﭘﻴﻜﺴﻞ ﻣﻮﺟﻮﺩ ﺟﺎﻱ ﻣﻲﺩﻫﺪ‪ .‬ﺍﻳﻦ‬
‫ﺩﺭﻭﻧﻴﺎﺑﻲ‪ ،‬ﻗﻄﻌﻪ ﺍﻱ ﺧﻄﻲ ﺍﺳﺖ ﻭ ﺳﺮﻳﻌﺘﺮ ﺍﺯ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻜﻌﺒﻲ ﺍﺳﺖ‪ .‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻜﻌﺒﻲ‪ ،‬ﻳﻚ ﺳﻄﺢ ﻣﻜﻌﺒﻲ ﺭﺍ ﺑﻴﻦ ﻣﻘﺎﺩﻳﺮ ﻣﻮﺟﻮﺩ ﺟﺎﻱ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫ﻣﻘﺪﺍﺭ ﭘﻴﻜﺴﻞ ﺟﺪﻳﺪ ﺍﺯ ﺭﻭﻱ ‪ ١٦‬ﻫﻤﺴﺎﻳﮕﻲ ﺁﻥ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻳﺪ‪ .‬ﺍﻳﻦ ﺭﻭﺵ ﻗﻄﻌﻪ ﺍﻱ ﻣﻜﻌﺒﻲ ﺍﺳﺖ ﻭ ﺳﻄﺤﻲ ﺑﺴﻴﺎﺭ ﻫﻤﻮﺍﺭﺗﺮ ﺍﺯ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ‬
‫ﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻨﺪ‪ .‬ﺷﻜﻞ ‪ ٥‬ﺍﻳﻦ ﺳﻪ ﺭﻭﺵ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺭﺍ ﻣﻘﺎﻳﺴﻪ ﻣﻲ ﻛﻨﺪ ﺍﻳﻦ ﺷﻜﻞ ﺑﺎ ﺩﺳﺘﻮﺭﺍﺕ ‪ MATLAB‬ﺯﻳﺮ ﺗﻮﻟﻴﺪ ﻣﻲ ﺷﻮﺩ‪:‬‬
‫ﺗﻐﻴﻴﺮ ﻧﺮﺥ ﻳﻚ ﺭﻭﺵ ﺑﺎ ﺍﺭﺯﺵ ﺩﺭ ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ ﺍﺳﺖ‪ .‬ﻛﺎﺭﺍﻳﻲ ﺁﻥ ﺑﺎ ﺗﺎﺑﻊ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺗﻌﻴﻴﻦ ﻣﻲ ﺷﻮﺩ‪ .‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﻧﺰﺩﻳﻜﺘﺮﻳﻦ‬
‫ﻫﻤﺴﺎﻳﮕﻲ ﺧﺼﻮﺻﹰﺎ ﺑﺮﺍﻱ ﺗﺼﺎﻭﻳﺮ ﺩﻭﺩﻭﻳﻲ ﺑﻪ ﺧﺎﻃﺮ ﻋﺪﻡ ﻭﺟﻮﺩ ﺳﻄﻮﺡ ﻣﻴﺎﻧﻲ ﻣﻨﺎﺳﺐ ﺍﺳﺖ‪ .‬ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ ﺳﺮﻳﻊ ﻭ ﺑﺎ ﻧﺘﺎﻳﺞ ﺧﻮﺏ ﺍﺳﺖ‪.‬‬
‫ﺩﺭﻭﻧﻴﺎﺑﻲ ﺍﺳﭙﻼﻳﻦ ﻣﻜﻌﺒﻲ ﺑﻬﺘﺮﻳﻦ ﺍﺳﺖ ﻭﻟﻲ ﺯﻣﺎﻥ ﻣﻮﺭﺩﻧﻴﺎﺯ ﺁﻥ ﺩﺭ ﺻﻮﺭﺕ ﺑﺰﺭﮒ ﺑﻮﺩﻥ ﺗﺼﻮﻳﺮ‪ ،‬ﺯﻳﺎﺩ ﺍﺳﺖ‪ .‬ﺍﻧﺘﺨﺎﺏ ﻣﻨﺎﺳﺐ ﺑﻪ ﻛﺎﺭﺑﺮﺩ ﻣﻮﺭﺩﻧﻈﺮ‬
‫ﻭﺍﺑﺴﺘﻪ ﺍﺳﺖ‪.‬‬
‫ﺷﮑﻞ ‪ :۵‬ﻣﻘﺎﻳﺴﻪ ﻣﺘﺪ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺩﺭﻭﻧﻴﺎﺑﻲ‬
‫ﺁﺯﻣﺎﻳﺶ ﻫﺎ‬
‫‪ -۱‬ﺗﻐﻴﻴﺮ ﻧﺮﺥ ﺗﺼﻮﻳﺮ ﺑﺎ ‪MATLAB‬‬
‫‪ -۱-۱‬ﺩﺳﺘﻮﺭ ‪ imresize‬ﺭﺍ ﺩﺭ ‪ MATLAB‬ﺑﺨﻮﺍﻧﻴﺪ ﻭ ﺑﺎ ﻧﺤﻮﻩ ﻋﻤﻠﮑﺮﺩ ﺁﻥ ﺁﺷﻨﺎ ﺷﻮﻳﺪ‪.‬‬
‫‪ -٢-١‬ﻳﮏ ﺗﺼﻮﻳﺮ ﺳﻴﺎﻩ ﻭ ﺳﻔﻴﺪ ﺭﺍ ﺩﺭ ‪ MATLAB‬ﺧﻮﺍﻧﺪﻩ ﻭ ﺑﺎ ﻓﺎﻛﺘﻮﺭ ‪ ٢‬ﺑﺪﻭﻥ ﭘﻴﺶ ﻓﻴﻠﺘﺮ ﻧﺮﺥ ﺁﻥ ﺭﺍ ﻛﻢ ﻛﻨﻴﺪ ﻭ ﺳﭙﺲ ﺑﺎ ﻓﺎﻛﺘﻮﺭ ‪ ٢‬ﺁﻧﺮﺍ ﺑﺎ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺳﻪ ﺭﻭﺵ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺑﺰﺭﮒ ﻛﻨﻴﺪ‪ ،‬ﺑﻪ ﺭﻭﺵ ﺯﻳﺮ ﺟﻠﻮ ﺑﺮﻭﻳﺪ‪ .‬ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﻣﻤﮑﻦ ﺍﺳﺖ ﺩﺭ ﺍﻳﻦ ﻣﺮﺣﻠﻪ‪ ،‬ﺑﻪ ﺩﻟﻴﻞ ﻧﻤﻮﻧﻪﺑﺮﺩﺍﺭﻱ ﮐﺎﻫﺸﻲ‪،‬‬
‫ﭘﺪﻳﺪﻩ ‪ aliasing‬ﺑﺮﺍﻱ ﺗﺼﻮﻳﺮ ﺍﺗﻔﺎﻕ ﺑﻴﻔﺘﺪ‪ .‬ﺑﺮﺍﻱ ﺟﻠﻮﮔﻴﺮﻱ ﺍﺯ ﺍﻳﻦ ﺍﻣﺮ‪ ،‬ﻣﻤﮑﻦ ﺍﺳﺖ ‪ MATLAB‬ﺑﻪ ﻃﻮﺭ ﭘﻴﺶﻓﺮﺽ ﻳﮏ ﻓﻴﻠﺘﺮ ﭘﺎﻳﻴﻦ ﮔﺬﺭ ﺭﺍ ﺭﻭﻱ‬
‫ﺗﺼﻮﻳﺮ ﺍﻋﻤﺎﻝ ﻧﻤﺎﻳﺪ‪ .‬ﺷﻤﺎ ﺩﺭ ﺍﻳﻦ ﻣﺮﺣﻠﻪ ﻧﺒﺎﻳﺪ ﺍﺯ ﺍﻳﻦ ﻓﻴﻠﺘﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ‪ ).‬ﺑﺮﺍﻱ ﺍﻃﻼﻉ ﺑﻴﺸﺘﺮ ﮔﺰﻳﻨﻪ '‪ 'Antialiasing‬ﺭﺍ ﺩﺭ ﺩﺳﺘﻮﺭ ‪imresize‬‬
‫ﺑﺨﻮﺍﻧﻴﺪ‪(.‬‬
‫• ﺗﺼﻮﻳﺮ ﺭﺍ ﺑﺨﻮﺍﻧﻴﺪ‪.‬‬
‫• ﺗﺼﻮﻳﺮ ﺭﺍ ﺑﺎ ﻓﺎﻛﺘﻮﺭ ‪ ٢‬ﺩﺭ ﻫﺮ ﺩﻭ ﺟﻬﺖ ﺍﻓﻘﻲ ﻭ ﻋﻤﻮﺩﻱ ﺑﺪﻭﻥ ﻓﻴﻠﺘﺮ ﻛﻮﭼﻚ ﻛﻨﻴﺪ‪.‬‬
‫• ﺗﺼﻮﻳﺮ ﺣﺎﺻﻞ ﺭﺍ ﺑﺎ ﻓﺎﻛﺘﻮﺭ ‪ ٢‬ﺑﺰﺭﮒ ﻛﻨﻴﺪ‪ ،‬ﺍﺯ ﺭﻭﺵ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻧﺰﺩﻳﻜﺘﺮﻳﻦ ﻫﻤﺴﺎﻳﻪ ﻧﻴﺰ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ‪.‬‬
‫• ﺗﺼﻮﻳﺮ ﺣﺎﺻﻞ ﺭﺍ ﺩﺭ ﻳﻚ ﻓﺎﻳﻞ ﺫﺧﻴﺮﻩ ﻛﻨﻴﺪ‪.‬‬
‫• ﺍﺧﺘﻼﻑ ﺑﻴﻦ ﺗﺼﻮﻳﺮ ﺍﺻﻠﻲ ﻭ ﺗﺼﻮﻳﺮ ﭘﺲ ﺍﺯ ﻛﻮﭼﻚ ﻭ ﺑﺰﺭﮒ ﺷﺪﻥ ﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﺪ ﻭ ﺗﺼﻮﻳﺮ ﺍﺧﺘﻼﻑ ﺭﺍ ﺍﺯ ﺭﻭﻱ ﺗﻔﺎﺿﻞ ﭘﻴﻜﺴﻞ ﺑﻪ‬
‫ﭘﻴﻜﺴﻞ ﺩﻭ ﺗﺼﻮﻳﺮ ﭘﻴﺪﺍ ﻛﻨﻴﺪ‪.‬‬
‫• ﻓﺮﺁﻳﻨﺪ ﺑﺎﻻ ﺭﺍ ﺑﺎ ﺭﻭﺵ ﺩﺭﻭﻧﻴﺎﺑﻲ ﺧﻄﻲ ﺗﻜﺮﺍﺭ ﻛﻨﻴﺪ‪.‬‬
‫• ﻓﺮﺍﻳﻨﺪ ﺑﺎﻻ ﺭﺍ ﺑﺎ ﺭﻭﺵ ﺩﺭﻭﻧﻴﺎﺑﻲ ﻣﻜﻌﺒﻲ ﺗﻜﺮﺍﺭ ﻛﻨﻴﺪ‪.‬‬
‫ﻧﺘﺎﻳﺞ ﺑﻪ ﺩﺳﺖ ﺁﻣﺪﻩ ﺍﺯ ﺳﻪ ﺭﻭﺵ ﺭﺍ ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪ .‬ﺍﻳﻦ ﻣﻘﺎﻳﺴﻪ ﺑﺮ ﺣﺴﺐ ﺗﺼﺎﻭﻳﺮ ﻛﻮﭼﻚ ‪ /‬ﺑﺰﺭﮒ ﺷﺪﻩ ﻭ ﺍﺧﺘﻼﻑ ﺗﺼﺎﻭﻳﺮ ﺑﺎﺷﺪ‪.‬‬
‫ﺗﺼﻮﻳﺮ ﺍﺻﻠﻲ ﻭ ﭘﺮﺩﺍﺯﺵ ﺷﺪﻩ )ﺑﻌﺪ ﺍﺯ ﻛﺎﻫﺶ ﻭ ﺍﻓﺰﺍﻳﺶ ﻧﺮﺥ( ﻭ ﺗﺼﻮﻳﺮ ﺍﺧﺘﻼﻑ ﺭﺍ ﺩﺭ ﮔﺰﺍﺭﺷﺘﺎﻥ ﺑﻴﺎﻭﺭﻳﺪ‪.‬‬
‫ﺑﻪ ﺍﺧﺘﻼﻑ ﺯﻣﺎﻥ ﺍﺟﺮﺍﻱ ﻫﺮ ﺭﻭﺵ ﺩﺭ ﮔﺰﺍﺭﺷﺘﺎﻥ ﺍﺷﺎﺭﻩ ﻛﻨﻴﺪ‪.‬‬
‫‪ -٣-١‬ﻣﺮﺍﺣﻞ ﻗﺒﻠﻲ ﺭﺍ ﺑﺎ ﺍﻋﻤﺎﻝ ﻓﻴﻠﺘﺮ ﭘﺎﻳﻴﻦ ﮔﺬﺭ ﺑﺮ ﺭﻭﻱ ﺗﺼﻮﻳﺮ ﺍﻧﺠﺎﻡ ﺩﻫﻴﺪ) ﮔﺰﻳﻨﻪ '‪ 'Antialiasing‬ﺭﺍ ‪ true‬ﮐﻨﻴﺪ‪ .(.‬ﻧﺘﺎﻳﺞ ﺭﻭﺵ ﻫﺎﻱ‬
‫ﻣﺨﺘﻠﻒ ﺭﺍ ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﺎ ﻧﺘﺎﻳﺞ ﺑﻪ ﺩﺳﺖ ﺁﻣﺪﻩ ﺩﺭ ‪ ٢-١‬ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪ -٢‬ﺑﻬﺒﻮﺩ ﺗﺼﻮﻳﺮ ﺑﺎ ﺍﺳﺘﻔﺎﻩ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﺩﻣﻮﻱ ‪MATLAB‬‬
‫‪ -١-٢‬ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ imadjdemo‬ﺑﺎﺯﻱ ﻛﻨﻴﺪ‪ .‬ﺗﺄﺛﻴﺮ ﺍﺑﺰﺍﺭ ﻣﺨﺘﻠﻒ ﺑﻬﺒﻮﺩ ﻛﺎﻧﺘﺮﺍﺳﺖ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻛﻨﻴﺪ )ﺑﺮﺍﻱ ﺩﻭ ﺗﺼﻮﻳﺮ ﻣﺨﺘﻠﻒ(‪ .‬ﺑﺮﺍﻱ ﻫﺮ ﺗﺼﻮﻳﺮ‬
‫ﺭﻭﺵ ﺑﻬﺒﻮﺩ ﺭﺍ ﻣﻌﻴﻦ ﻛﻨﻴﺪ‪) .‬ﺑﺮﺍﻱ ﺗﻨﻈﻴﻢ ﻣﻘﺎﺩﻳﺮ‪ ،‬ﻧﻴﺎﺯ ﺑﻪ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﺑﻬﺘﺮﻳﻦ ﺗﻨﺎﻇﺮ ﺑﻪ ﻭﺳﻴﻠﻪ ﺳﻌﻲ ﻭ ﺧﻄﺎ ﺩﺍﺭﻳﺪ(‪ .‬ﺩﺭ ﮔﺰﺍﺭﺷﺘﺎﻥ‪ ،‬ﻧﺘﺎﻳﺞ ﺑﻬﺘﺮﻳﻦ ﺭﻭﺵ‬
‫ﺑﺮﺍﻱ ﻫﺮ ﺗﺼﻮﻳﺮ ﺭﺍ ﺍﺭﺍﺋﻪ ﺩﻫﻴﺪ‪ .‬ﻣﺸﺎﻫﺪﺍﺕ ﺧﻮﺩ ﺭﺍ ﺍﺯ ﻧﻘﺎﻁ ﻣﺜﺒﺖ ﻭ ﻣﻨﻔﻲ ﺭﻭﺵﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺍﺭﺍﺋﻪ ﺩﻫﻴﺪ‪ .‬ﺗﻮﺟﻪ ﻭﻳﮋﻩ ﺑﻪ ﺗﻐﻴﻴﺮﺍﺕ ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺑﻜﻨﻴﺪ‪.‬‬
‫‪ -٢-٢‬ﺣﺎﻝ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﮐﺪ ﺯﻳﺮ‪،‬ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﺗﺼﻮﻳﺮﻫﺎﻱ ﺩﻟﺨﻮﺍﻩ ﺧﻮﺩ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻭ ﺁﻥﻫﺎ ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﻫﻴﺪ‪ .‬ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﺗﺼﻮﻳﺮ ﻭﺭﻭﺩﻱ ﺷﻤﺎ‪،‬‬
‫ﻧﺒﺎﻳﺪ ﺭﻧﮕﻲ ﺑﺎﺷﺪ‪.‬‬
‫;)' ‪filename=input('insert file name:‬‬
‫;)‪f=imread(filename‬‬
‫;)‪imshow(f‬‬
‫;)‪figure,imhist(f‬‬
‫;)'‪ylim('auto‬‬
‫;)‪g=histeq(f,256‬‬
‫;)‪figure,imshow(g‬‬
‫;)‪figure,imhist(g‬‬
‫;)'‪ylim('auto‬‬
‫‪ -٣-٢‬ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ nrfiltdemo‬ﺑﺎﺯﻱ ﻛﻨﻴﺪ‪ .‬ﺗﺄﺛﻴﺮ ﺍﺑﺰﺍﺭﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺣﺬﻑ ﻧﻮﻳﺰ ﺑﺮﺍﻱ ﻫﺮ ﻳﻚ ﺍﺯ ﺳﻪ ﻧﻮﻉ ﻧﻮﻳﺰ )ﻛﻪ ﺑﺎ ﻣﻘﺎﺩﻳﺮ ﭘﻴﺶ ﻓﺮﺽ ﻳﺎ ﻣﻘﺎﺩﻳﺮ‬
‫ﺍﻧﺘﺨﺎﺑﻲ ﺷﻤﺎ ﺗﻮﻟﻴﺪ ﺷﺪﻩﺍﻧﺪ( ﺭﺍ ﺑﺮﺭﺳﻲ ﻛﻨﻴﺪ‪ .‬ﺑﺮﺍﻱ ﻫﺮ ﻧﻮﻉ ﻧﻮﻳﺰ‪ ،‬ﺭﻭﺷﻲ ﻛﻪ ﺑﻬﺘﺮﻳﻦ ﻧﺘﻴﺠﻪ ﺭﺍ ﻣﻲ ﺩﻫﺪ ﻳﺎﺩﺩﺍﺷﺖ ﻛﻨﻴﺪ‪.‬‬
‫‪ -٤-٢‬ﻣﺰﺍﻳﺎ‪ ،‬ﻣﻌﺎﻳﺐ ﻭ ﮐﺎﺭﺑﺮﺩ ﻫﺮ ﻳﮏ ﺍﺯ ﻓﻴﻠﺘﺮﻫﺎﻱ ﺑﻪ ﮐﺎﺭ ﺭﻓﺘﻪ ﺭﺍ ﺷﺮﺡ ﺩﻫﻴﺪ‪.‬‬
‫‪ -٥-٢‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﮐﺪ ﺯﻳﺮ‪ ،‬ﻧﻮﻳﺰﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﺗﺼﺎﻭﻳﺮ ﺩﻟﺨﻮﺍﻩ ﻭﺭﻭﺩﻱ ﺍﻣﺘﺤﺎﻥ ﮐﻨﻴﺪ‪ .‬ﺳﭙﺲ ﺑﺮﺍﻱ ﻫﺮ ﻳﮏ ﺍﺯ ﺍﻳﻦ ﻧﻮﻳﺰﻫﺎ ﻓﻴﻠﺘﺮ ﻣﻨﺎﺳﺐ‬
‫ﺟﻬﺖ ﺣﺬﻑ ﻧﻮﻳﺰ ﺭﺍ ﺑﻪ ﮐﺎﺭ ﺑﺮﻳﺪ‪.‬‬
‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ help‬ﺩﺭ ‪ ،MATLAB‬ﻧﺤﻮﻩ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ‪ medfilt2 ،imfilter ، imnoise‬ﻭ ‪ wiener2‬ﺭﺍ ﺑﺒﻴﻨﻴﺪ‪ .‬ﭘﺎﺭﺍﻣﺘﺮﻫﺎﻱ‬
‫ﻧﻮﻳﺰﻫﺎ ﻭ ﻓﻴﻠﺘﺮﻫﺎ) ﻣﺎﻧﻨﺪ ﺍﻧﺪﺍﺯﻩ ﭘﻨﺠﺮﻩ ﻓﻴﻠﺘﺮ( ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﻫﻴﺪ ﻭ ﺗﺎﺛﻴﺮ ﻫﺮ ﻳﮏ ﺭﺍ ﺑﺮ ﺧﺮﻭﺟﻲ ﺑﺒﻴﻨﻴﺪ‪.‬‬
‫;)' ‪filename=input('insert file name:‬‬
‫;)‪f=imread(filename‬‬
‫;) ' ‪t=input('insert type of noise(salt & pepper,speckle,gaussian):‬‬
‫;)‪f1=imnoise(f,t‬‬
‫;) ' ‪fil=input('insert type of filter(mean, median,adaptive):‬‬
‫‪switch fil‬‬
‫'‪case 'mean‬‬
‫!‪%you can use lines 9 & 10 or line 11 for your filter‬‬
‫;)‪w=(1/9)*ones(3‬‬
‫;)'‪f2=imfilter(f1,w, 'conv','replicate‬‬
‫;‪%f2 = filter2(fspecial('average',3),f1)/255‬‬
‫'‪case 'median‬‬
‫;)]‪f2=medfilt2(f1,[3 3‬‬
‫'‪case 'adaptive‬‬
‫;)]‪f2=wiener2(f1,[3 3‬‬
‫‪end‬‬
‫;)‪figure; imshow(f‬‬
‫;)‪figure; imshow(f1‬‬
‫;)‪figure; imshow(f2‬‬
‫‪ -٦-٢‬ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ edgedemo‬ﺑﺎﺯﻱ ﻛﻨﻴﺪ‪ .‬ﺗﺄﺛﻴﺮ ﺍﺑﺰﺍﺭ ﻣﺨﺘﻠﻒ ﺁﺷﻜﺎﺭﺳﺎﺯﻱ ﻟﺒﻪ ﺭﺍ ﺑﺮﺭﺳﻲ ﻛﻨﻴﺪ‪ .‬ﺑﺮﺍﻱ ﻫﺮ ﺗﺼﻮﻳﺮ ﺭﻭﺷﻲ ﻛﻪ ﺑﻬﺘﺮﻳﻦ ﻧﺘﻴﺠﻪ ﺭﺍ ﻣﻲ‬
‫ﺩﻫﺪ ﻳﺎﺩﺩﺍﺷﺖ ﻛﻨﻴﺪ‪ .‬ﻣﺸﺎﻫﺪﺍﺕ ﺧﻮﺩ ﺍﺯ ﻣﺰﺍﻳﺎ ﻭ ﻣﻌﺎﻳﺐ ﺭﻭﺵ ﻫﺎ ﺭﺍ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫‪ -٧-٢‬ﮐﺪ ﺯﻳﺮ ﺭﺍ ﺩﺭ ‪ MATLAB‬ﺍﺟﺮﺍ ﮐﻨﻴﺪ‪ .‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺩﺳﺘﻮﺭ‪ ،‬ﻟﺒﻪﻫﺎﻱ ﺗﺼﺎﻭﻳﺮ ﺩﻟﺨﻮﺍﻩ ﺧﻮﺩ ﺭﺍ ﺁﺷﮑﺎﺭ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺑﺎ ﺗﻐﻴﻴﺮ ﺩﺭ ﺩﺳﺘﻮﺭ‬
‫‪ ،fspecial‬ﺳﺎﻳﺮ ﺭﻭﺵﻫﺎﻱ ﺁﺷﮑﺎﺭﺳﺎﺯﻱ ﻟﺒﻪ ﺭﺍ ﻧﻴﺰ ﺑﺮﺭﺳﻲ ﮐﻨﻴﺪ‪.‬‬
‫;)' ‪filename=input('insert file name:‬‬
‫;)‪f=imread(filename‬‬
‫;))‪f=ind2gray(f,gray(256‬‬
‫;)‪f1=filter2(fspecial('unsharp'),f‬‬
‫;)‪figure; imshow(f‬‬
‫;)‪figure; imshow(f1‬‬
‫‪ -۸-۲‬ﺗﺎﺑﻌﻲ ﺑﺎ ﻧﺎﻡ ‪ segmentation‬ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﻳﮏ ﺗﺼﻮﻳﺮ ﻭ ﻧﻴﺰ ﻣﻘﺪﺍﺭ ﺁﺳﺘﺎﻧﻪ ﺭﺍ ﺍﺯ ﮐﺎﺭﺑﺮ ﮔﺮﻓﺘﻪ ﻭ ﻟﺒﻪﻫﺎﻱ ﺁﻥ ﺭﺍ ﺁﺷﮑﺎﺭ ﻧﻤﺎﻳﺪ‪ .‬ﺍﻳﻦ ﺗﺎﺑﻊ‬
‫ﺑﺎﻳﺪ ﻣﻘﺎﺩﻳﺮﻱ ﺍﺯ ﺗﺼﻮﻳﺮ ﮐﻪ ﺑﻴﺸﺘﺮ ﺍﺯ ﺁﺳﺘﺎﻧﻪ ﺍﺳﺖ ﺭﺍ ﺑﻪ ﻣﻘﺪﺍﺭ ‪ ۱‬ﻭ ﻣﻘﺎﺩﻳﺮ ﮐﻤﺘﺮ ﺍﺯ ﺁﺳﺘﺎﻧﻪ ﺭﺍ ﺑﻪ ﺻﻔﺮ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﺪ‪) .‬ﺗﺼﻮﻳﺮ ﻭﺭﻭﺩﻱ ﺭﺍ ﺑﻪ ﺳﻴﺎﻩ ﻭ‬
‫ﺳﻔﻴﺪ ﻭ ﻧﻮﻉ ‪ double‬ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴﺪ‪ .‬ﻣﻘﺪﺍﺭ ﺁﺳﺘﺎﻧﻪ ﻧﻴﺰ ﺑﺎﻳﺪ ﻣﻘﺪﺍﺭ ﺑﻴﻦ ﺻﻔﺮ ﻭ ﻳﮏ ﺑﺎﺷﺪ‪(.‬‬
‫‪ -٣‬ﭘﺮﺩﺍﺯﺵ ﺗﺼﻮﻳﺮ ﺩﺭ ﺣﻮﺯﻩ ﻓﺮﮐﺎﻧﺲ‬
‫‪ -۱-۳‬ﺍﻋﻤﺎﻝ ﺗﺒﺪﻳﻞ ﻓﻮﺭﻳﻪ ﺑﺮ ﺭﻭﻱ ﺗﺼﻮﻳﺮ‬
‫ﮐﺪ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻣﺤﻴﻂ ‪ MATLAB‬ﺍﺟﺮﺍ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺍﻳﻦ ﮐﺪ‪ ،‬ﺑﺮ ﺭﻭﻱ ﻳﮏ ﺗﺼﻮﻳﺮ ﻭﺭﻭﺩﻱ‪،‬ﺗﺒﺪﻳﻞ ﻓﻮﺭﻳﻪ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ‪.‬‬
‫‪% Prepare image‬‬
‫;)' ‪filename=input('insert file name:‬‬
‫;)‪f = imread(filename‬‬
‫;))‪f = ind2gray(f,gray(256‬‬
‫)‪imshow(f‬‬
‫‪% Compute Fourier Transform‬‬
‫;)‪F = fft2(f,256,256‬‬
‫‪F = fftshift(F); % Center FFT‬‬
‫‪% Measure the minimum and maximum value of the transform amplitude‬‬
‫‪%‬‬
‫‪min(min(abs(F))) %‬‬
‫‪0‬‬
‫‪%‬‬
‫‪max(max(abs(F))) % 100‬‬
‫‪figure,imshow(abs(F),[]); colormap(jet); colorbar‬‬
‫‪figure,imshow(log(1+abs(F)),[]); colormap(jet); colorbar‬‬
‫‪% Look at the phases‬‬
‫‪figure, imshow(angle(F),[-pi,pi]); colormap(jet); colorbar‬‬
‫ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺘﻴﺠﻪ ﮐﺪ ﺑﺎﻻ‪ ،‬ﺗﻔﺎﻭﺕ ﺍﺻﻠﻲ ﻧﻤﺎﻳﺶ ﺩﺍﻣﻨﻪ ﺗﺼﻮﻳﺮ ﻭ ﻟﮕﺎﺭﻳﺘﻢ ﺁﻥ ﺩﺭ ﭼﻴﺴﺖ؟ ﺩﻟﻴﻞ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ fftshift‬ﺭﺍ ﺑﻴﺎﻥ ﮐﻨﻴﺪ‪.‬‬
‫‪ -۲-۳‬ﭼﺮﺧﺶ ﺗﺼﻮﻳﺮ‬
‫ﻳﮏ ﺗﺼﻮﻳﺮ ﻣﺴﺘﻄﻴﻞ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬ﺩﺭ ﻳﮏ ﺗﺎﺑﻊ‪ ،‬ﺍﺑﺘﺪﺍ ﺍﻳﻦ ﺗﺼﻮﻳﺮ ﻭ ﺗﺒﺪﻳﻞ ﻓﻮﺭﻳﻪ ﺁﻥ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﻫﻴﺪ‪ .‬ﺳﭙﺲ‪ ،‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭ‬
‫‪ imrotate‬ﺩﺭ ‪ ،MATLAB‬ﺁﻥ ﺭﺍ ﺑﺎ ﺯﺍﻭﻳﻪﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺑﭽﺮﺧﺎﻧﻴﺪ‪ .‬ﺳﭙﺲ ﺩﻭﺑﺎﺭﻩ ﺍﺯ ﺗﺼﻮﻳﺮ ﺗﺒﺪﻳﻞ ﻓﻮﺭﻳﻪ ﮔﺮﻓﺘﻪ ﻭ ﺁﻥ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﻫﻴﺪ‪ .‬ﺁﻳﺎ ﻣﻲ‪-‬‬
‫ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺭﻭﻱ ﺗﺒﺪﻳﻞ ﻓﻮﺭﻳﻪ ﺍﻳﻦ ﺗﺼﺎﻭﻳﺮ‪ ،‬ﻣﻴﺰﺍﻥ ﭼﺮﺧﺶ ﺗﺼﻮﻳﺮ ﺭﺍ ﺗﺸﺨﻴﺺ ﺩﻫﻴﺪ؟ ﺑﻪ ﻧﻈﺮ ﺷﻤﺎ ﺩﻟﻴﻞ ﺍﻳﻦ ﭘﺪﻳﺪﻩ ﭼﻴﺴﺖ؟‬
‫‪ -۳-۳‬ﻓﻴﻠﺘﺮ ﮐﺮﺩﻥ ﺗﺼﻮﻳﺮ ﺩﺭ ﺣﻮﺯﻩ ﻓﺮﮐﺎﻧﺲ‬
‫ﺩﺭ ﺧﻼﻝ ﺗﻤﺮﻳﻦ ‪ ،۲‬ﺑﺎ ﺑﺮﺧﻲ ﺭﻭﺵﻫﺎﻱ ﻓﻴﻠﺘﺮ ﮐﺮﺩﻥ ﺗﺼﻮﻳﺮ ﺩﺭ ﺣﻮﺯﻩ ﻣﮑﺎﻥ ﺁﺷﻨﺎ ﺷﺪﻳﺪ‪).‬ﻓﻴﻠﺘﺮ ﮐﺮﺩﻥ ﻧﻮﻳﺰ‪ ،‬ﺁﺷﮑﺎﺭﺳﺎﺯﻱ ﻟﺒﻪ ﺗﺼﻮﻳﺮ(‪ .‬ﺩﺭ ﺍﻳﻦ‬
‫ﻗﺴﻤﺖ ﺑﺎ ﺍﻋﻤﺎﻝ ﻓﻴﻠﺘﺮ ﺑﺮ ﺭﻭﻱ ﺗﺼﻮﻳﺮ ﺩﺭ ﺣﻮﺯﻩ ﻓﺮﮐﺎﻧﺲ ﺁﺷﻨﺎ ﺧﻮﺍﻫﻴﺪ ﺷﺪ‪.‬‬
‫ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﻳﮏ ﻓﻴﻠﺘﺮ ﭘﺎﻳﻴﻦ ﮔﺬﺭ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﻳﮏ ﺗﺼﻮﻳﺮ ﺳﻴﺎﻩ ﻭ ﺳﻔﻴﺪ ﺍﻋﻤﺎﻝ ﻧﻤﺎﻳﺪ‪ .‬ﺍﻳﻦ ﺗﺎﺑﻊ ﺑﺎ ﮔﺮﻓﺘﻦ ﻓﺮﮐﺎﻧﺲ ﻗﻄﻊ ﻓﻴﻠﺘﺮ ﺍﺯ ﮐﺎﺭﺑﺮ‪،‬‬
‫ﻓﺮﮐﺎﻧﺲﻫﺎﻱ ﮐﻤﺘﺮ ﺍﺯ ﺁﺳﺘﺎﻧﻪ ﺭﺍ ﺑﺮﺍﻱ ﺗﺼﻮﻳﺮ ﻧﮕﻪ ﺩﺍﺷﺘﻪ ﻭ ﻓﺮﮐﺎﻧﺲﻫﺎﻱ ﺑﺎﻻﺗﺮ ﺍﺯ ﺁﻥ ﺭﺍ ﺣﺬﻑ ﻧﻤﺎﻳﺪ‪ .‬ﺩﺭ ﭘﺎﻳﺎﻥ ﺗﺼﻮﻳﺮ ﺍﺻﻠﻲ ﻭ ﺗﺼﻮﻳﺮ ﻓﻴﻠﺘﺮ ﺷﺪﻩ ﺭﺍ‬
‫ﻧﻤﺎﻳﺶ ﺩﻫﻴﺪ‪ .‬ﺗﺎﺑﻊ ﺭﺍ ﺑﻪ ﺍﺯﺍﻱ ﻓﺮﮐﺎﻧﺲ ﻗﻄﻊﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺍﺟﺮﺍ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -٤‬ﻓﺸﺮﺩﻩﺳﺎﺯﻱ ﺗﺼﻮﻳﺮ‬
‫‪ -۱-۴‬ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﺍﺯ ﺗﻤﺮﻳﻦ ﺍﺯ ﺷﻤﺎ ﺧﻮﺍﺳﺘﻪ ﻣﻲﺷﻮﺩ ﺗﺎ ﻣﻴﺰﺍﻥ ﺧﻄﺎﻱ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺭﻭﻱ ﺗﺼﻮﻳﺮ ﺭﺍ ﺑﺮ ﺍﺛﺮ ﮐﺪ ﮐﺮﺩﻥ ﺁﻥ ﺑﺎ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ‪JPEG‬‬
‫ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ‪ ،‬ﺍﺑﺘﺪﺍ ﻳﮏ ﺗﺼﻮﻳﺮ ﺑﺎ ﻓﺮﻣﺖ ‪ .tif‬ﺭﺍ ﺩﺭ ‪ MATLAB‬ﺑﺨﻮﺍﻧﻴﺪ‪ .‬ﺳﭙﺲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭ ‪ ،imwrite‬ﺍﻳﻦ ﻓﺎﻳﻞ ﺭﺍ ﺑﻪ‬
‫ﺻﻮﺭﺕ ‪ .jpg‬ﺫﺧﻴﺮﻩ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺣﺎﻝ ﺑﺮﺍﻱ ﺗﺼﻮﻳﺮ ‪ .tif‬ﻭ ﺗﺼﻮﻳﺮ ‪ .jpg‬ﻣﻘﺪﺍﺭ )‪ Mean Square Error(MSE‬ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ‬
‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭ ‪ MATLAB‬ﺗﺼﻮﻳﺮ ‪ jpg‬ﺭﺍ ﺑﺎ ﻧﺮﺥﻫﺎﻱ ﻣﺨﺘﻠﻒ‪ ،‬ﮐﻴﻔﻴﺖ ﻣﺘﻔﺎﻭﺕ ﻭ ﺑﻪ ﺻﻮﺭﺕ ﺑﺎ‪/‬ﺑﺪﻭﻥ ﺍﺗﻼﻑ ﺫﺧﻴﺮﻩ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺍﻳﻦ ﺁﺯﻣﺎﻳﺶ ﺭﺍ‬
‫ﺑﺮﺍﻱ ﻧﺮﺥﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺧﺮﻭﺟﻲ‪ ،‬ﮐﻴﻔﻴﺖﻫﺎﻱ ﻣﺘﻔﺎﻭﺕ ﻭ ﻧﻴﺰ ﺑﻪ ﺻﻮﺭﺕ ﺑﺎ‪/‬ﺑﺪﻭﻥ ﺍﺗﻼﻑ ﺍﻧﺠﺎﻡ ﺩﺍﺩﻩ ﻭ ﻣﻘﺪﺍﺭ ‪ MSE‬ﺭﺍ ﺩﺭ ﻫﺮ ﻣﺤﺎﺳﺒﻪ ﻭ ﺑﺎ ﻳﮑﺪﻳﮕﺮ‬
‫ﻣﻘﺎﻳﺴﻪ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -۲-۴‬ﭘﻴﻮﺳﺖ ﺍﻟﻒ ﺑﺮﻧﺎﻣﺔ ‪ dctquant‬ﺭﺍ ﻣﻲ ﺩﻫﺪ ﻛﻪ ‪ DCT‬ﺭﺍ ﺑﺮ ﺭﻭﻱ ﺑﻠﻮﻙ ‪ ۸*۸‬ﺣﺴﺎﺏ ﻣﻲ ﻛﻨﺪ ﻭ ﺳﭙﺲ ﺿﺮﺍﻳﺐ ‪ DCT‬ﺭﺍ ﻛﻮﺍﻧﺘﻴﺰﻩ ﻣﻲ‬
‫ﻛﻨﺪ‪ .‬ﺳﭙﺲ ﻋﻜﺲ ‪ DCT‬ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﺪ ﺗﺎ ﺗﺼﻮﻳﺮ ﺑﺎﺯﺳﺎﺯﻱ ﺷﺪﻩ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩ‪ .‬ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﺑﺎﺯﻱ ﻛﻨﻴﺪ ﺗﺎ ﺗﺄﺛﻴﺮ ﻛﻮﺍﻧﺘﻴﺰﺍﺳﻴﻮﻥ ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ‬
‫ﻓﺎﻛﺘﻮﺭﻫﺎﻱ ﻣﻘﻴﺎﺱ ﻣﺨﺘﻠﻒ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﻳﺪ‪.‬‬
‫‪ dctquant.m-۳-۴‬ﺭﺍ ﺍﺻﻼﺡ ﻛﻨﻴﺪ ﻭ ﺑﻪ ﺟﺎﻱ ﻛﻮﺍﻧﺘﻴﺰﻩ ﻛﺮﺩﻥ ﺿﺮﺍﻳﺐ ‪ DCT‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﺎﺗﺮﻳﺲ ﻧﺮﻣﺎﻟﻴﺰﺍﺳﻴﻮﻥ ﻓﺮﺍﻫﻢ ﺷﺪﻩ ﺗﻨﻬﺎ ‪ L‬ﺿﺮﻳﺐ‬
‫ﺍﻭﻝ ﺭﺍ ﺩﺭ ﻳﻚ ﺗﺮﺗﻴﺐ ﺯﻳﮓ ﺯﺍﮒ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ‪ .‬ﻣﻘﺎﺩﻳﺮ ﻣﺨﺘﻠﻒ ‪ L‬ﺑﻴﻦ ‪ ۱‬ﺗﺎ ‪ ۱۶‬ﺭﺍ ﺍﻣﺘﺤﺎﻥ ﻛﻨﻴﺪ‪.‬‬
‫ﺗﻮﺟﻪ ‪ :‬ﺷﻤﺎ ﺑﺎﻳﺪ ﻣﺎﺳﻚ ﺭﺍ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻃﻮﺭﻱ ﺍﺻﻼﺡ ﻛﻨﻴﺪ ﻛﻪ ﺑﺘﻮﺍﻧﺪ ﺗﺸﺨﻴﺺ ﺩﻫﺪ ﻛﻪ ﻛﺪﺍﻡ ﺿﺮﺍﻳﺐ ﺑﺎﻳﺪ ﺣﻔﻆ ﺷﻮﻧﺪ ﻭ ﻛﺪﺍﻡ ﺿﺮﺍﻳﺐ ﺑﺎﻳﺪ ﺻﻔﺮ‬
‫ﺷﻮﻧﺪ‪ .‬ﻳﺎ ﺍﻳﻨﻜﻪ ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ”‪ “mask‬ﺟﺪﻳﺪ ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﺎﺭ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫‪ -۴-۴‬ﺑﺮﻧﺎﻣﻪ ‪ dctquant.m‬ﺭﺍ ﺍﺻﻼﺡ ﻛﻨﻴﺪ ﻃﻮﺭﻱ ﻛﻪ ﺑﻪ ﺟﺎﻱ ﻛﻮﺍﻧﺘﻴﺰﻩ ﻛﺮﺩﻥ ﺿﺮﺍﻳﺐ ‪ DCT‬ﺑﺮ ﺍﺳﺎﺱ ﻣﺎﺗﺮﻳﺲ ﻧﺮﻣﺎﻟﻴﺰﺍﺳﻴﻮﻥ‪ ،‬ﺗﻨﻬﺎ ﺿﺮﺍﻳﺒﻲ ﺭﺍ‬
‫ﻧﮕﻪ ﺩﺍﺭﺩ ﻛﻪ ﺍﻧﺪﺍﺯﻩ ﺍﻱ ﺑﺰﺭﮔﺘﺮ ﺍﺯ ﺁﺳﺘﺎﻧﻪ ‪ T‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ .‬ﻣﻘﺎﺩﻳﺮ ﻣﺨﺘﻠﻒ ‪ T‬ﺑﻴﻦ ‪ ۱‬ﺗﺎ ‪ ۲۵۶‬ﺭﺍ ﺍﻣﺘﺤﺎﻥ ﻛﻨﻴﺪ‪.‬‬
‫ ا‬
******************************************************************
* MATLAB Script file for demonstration of DCT representation of images *
* You should find out how to use “blkproc” by on-line help in matlab.
******************************************************************
function dctquant(FileName,dx,dy);
% usage : dctquant('h:\el593\exp10\lena.img',256,256); (WYT: please verify)
% Note, dctquant calls subfunctions mask2()
Img=fread(fopen(FileName),[dx,dy]);
colormap(gray(256));
image(Img');
set(gca,'XTick',[],'YTick',[]);
title('Original Image');
truesize;
drawnow
y=blkproc(Img,[8 8],'dct2');
yy=blkproc(y,[8 8],'mask2');
yq=blkproc(yy,[8,8],'idct2');
figure;
colormap(gray(256));
image(yq');
set(gca,'XTick',[],'YTick',[]);
title('Quantized Image');
truesize;
drawnow;
‫ ب‬
******************************************************************
* MATLAB Script file for demonstration of DCT (subroutine 1) *
******************************************************************
function [y]=mask2(x);
mask=[16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 104 113 92;
49 64 78 87 103 121 120 101;
72 92 95 56 112 100 103 99];
% Normally c=1
c=16;
mask=c*mask;
z=round(x./mask);
y=mask.*z;