با سلام و خسته نباشيد
مدتي است كه به مشكلي برخورده ام كه تا بحال برايم لاينحل مانده است . در صورت امكان، اساتيد كمك كنند.
صورت مساله : در برنامه اي كه با دلفي نوشته ام ، يك تصوير رنگي با تعداد رنگ يك ميليون داريم ؛ هدف برنامه اينست كه ما بعنوان يك كاربر ، رنگ پيكسلهاي اين تصوير اوليه كاملا واضح را با رنگ هايي انتخابي كه قبلا توسط ما ( كاربر ) در داخل يك ComboBox ذخيره شده اند جايگزين كنيم ؛ به نحوي كه باز هم تصوير حاصل از اين جايگزيني ، كاملا واضح و البته با تعداد رنگ كمتري باشد ( چون تعداد رنگ موجود در ColorComboBox كاملا محدود وكم است ؛ مثلا 100 رنگ ) .
راه حل اوليه و البته نادرست من : من براي اينكار يك جدول شامل فيلدهاي R , G , B از نوع String ايجاد كردم و در كد برنامه ، تصوير اوليه ( اصلي ) را به صورت سطري و پيكسل به پيكسل اسكن كرده و مقادير سه رنگ اصلي هر پيكسل را در فيلدهاي R , G , B ريختم ؛در ادامه كدي نوشتم كه به كاربر اجازه مي دهد رنگ هاي انتخابي خودش را از ColorDialogBox انتخاب كرده و در يك ColorComboBox بريزد .
حال در ادامه با كليك يك Button ، برنامه تك تك مقادير R , G , B موجود در جدول را ( اين جدول رنگ هاي هر پيكسل تصوير اوليه را در خود ذخيره كرده است ) دوباره از ابتداي جدول خوانده و با رنگ هاي انتخابي كاربر ( موجود در ColorComboBox ) مقايسه نموده و نزديكترين مقدار موجود در ColorComboBox را بر مي گرداند و رنگ پيكسل مربوطه را با آن جايگزين مي كند .
و اما اين برنامه درست عمل نمي كند ؛ چرا كه در اكثر مواقع رنگ جايگزين شده كاملا غير نزديك است و ...
مسلما الگوريتم من اشتباه است . الگوريتم صحيح چيست ؟
با تشكر ( علي اكبر )
مدتي است كه به مشكلي برخورده ام كه تا بحال برايم لاينحل مانده است . در صورت امكان، اساتيد كمك كنند.
صورت مساله : در برنامه اي كه با دلفي نوشته ام ، يك تصوير رنگي با تعداد رنگ يك ميليون داريم ؛ هدف برنامه اينست كه ما بعنوان يك كاربر ، رنگ پيكسلهاي اين تصوير اوليه كاملا واضح را با رنگ هايي انتخابي كه قبلا توسط ما ( كاربر ) در داخل يك ComboBox ذخيره شده اند جايگزين كنيم ؛ به نحوي كه باز هم تصوير حاصل از اين جايگزيني ، كاملا واضح و البته با تعداد رنگ كمتري باشد ( چون تعداد رنگ موجود در ColorComboBox كاملا محدود وكم است ؛ مثلا 100 رنگ ) .
راه حل اوليه و البته نادرست من : من براي اينكار يك جدول شامل فيلدهاي R , G , B از نوع String ايجاد كردم و در كد برنامه ، تصوير اوليه ( اصلي ) را به صورت سطري و پيكسل به پيكسل اسكن كرده و مقادير سه رنگ اصلي هر پيكسل را در فيلدهاي R , G , B ريختم ؛در ادامه كدي نوشتم كه به كاربر اجازه مي دهد رنگ هاي انتخابي خودش را از ColorDialogBox انتخاب كرده و در يك ColorComboBox بريزد .
حال در ادامه با كليك يك Button ، برنامه تك تك مقادير R , G , B موجود در جدول را ( اين جدول رنگ هاي هر پيكسل تصوير اوليه را در خود ذخيره كرده است ) دوباره از ابتداي جدول خوانده و با رنگ هاي انتخابي كاربر ( موجود در ColorComboBox ) مقايسه نموده و نزديكترين مقدار موجود در ColorComboBox را بر مي گرداند و رنگ پيكسل مربوطه را با آن جايگزين مي كند .
و اما اين برنامه درست عمل نمي كند ؛ چرا كه در اكثر مواقع رنگ جايگزين شده كاملا غير نزديك است و ...
مسلما الگوريتم من اشتباه است . الگوريتم صحيح چيست ؟
با تشكر ( علي اكبر )