کلیدستان

نسخه‌ی کامل: تبدیل عکس به پیکسل های نقطه ای (در متلب)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام میخواستم ببینم چطوری با متلب میشه یک عکس رنگی را به پیکسل های نقطه ای سیاه تبدیل کرد؟
بطوری بعد از اینکه تبدیل کرد فورمتش , فورمت عکس نباشه بلکه بصورت نقطه نقطه در یک صفحه ای نمایش بده و بشه کپی کرد.

 
سلام.
نمی دونم منظورتون رو درست متوجه شدم یا نه، ولی با توجه به سوال شما، کلید زیر را نوشتم :

کلید شماره 2943

در کلید فوق شرح داده ایم که چگونه عکس را به عکس باینری (تنها شامل 0 یا 1) تبدیل کنید (به عکس سیاه و سفید تبدیل می شود). در مورد اینکه مقادیر پیکسل ها را می خواهید، باید ببینید که اطلاعات عکس در چه ماتریسی ذخیره شده و مقادیر را از آن ماتریس بخوانید.

ابتدا تشکر میکنم از شما استاد عزیز
بله مشکلم حل شد خیلی جستجو کردم تو اینترنت ولی پیدا نکردم چنین موضوعی را با لطف شما و سایت خوبتون به جوابم رسیدم

 

 
سلام
یک سوال دیگه در این زمینه برام پیش اومد ممنون میشم اگر پاسخ بدهید
ایا میشود عکس مورد نظرمان را که متلب به عکس باینری تبدیل کرد بصورت یک فایل txt باشه؟
به عبارت دیگه اون عکس باینری را در یک فایل txt بعنوان خروجی تحویل بده ؟یعنی بصورت عکس نباشه؟

 
(۱۳۹۳/۱۰/۰۱, ۱۱:۴۷ ق.ظ)'s.saeid' نوشته: [ -> ]سلام
یک سوال دیگه در این زمینه برام پیش اومد ممنون میشم اگر پاسخ بدهید
ایا میشود عکس مورد نظرمان را که متلب به عکس باینری تبدیل کرد بصورت یک فایل txt باشه؟
به عبارت دیگه اون عکس باینری را در یک فایل txt بعنوان خروجی تحویل بده ؟یعنی بصورت عکس نباشه؟
 

بله، چون نرم افزار متلب، عکس ها را به صورت ماتریس در حافظه خود نگه می دارد، تنها کاری که باید انجام بدهیم این است که تعیین کنیم ماتریس حاوی اطلاعات عکس، در یک فایل متنی (مثلا با فرمت txt) ذخیره شود. برای نوشتن اطلاعات ماتریس در فایل متنی، مثال زیر را ببینید :

کد پی‌اچ‌پی:
clear all
close all
clc

= [1 2 34 5 67 8 9]  % Write this to file.
fid fopen('myFile.txt','wt');
for 
ii 1:size(A,1)
    
fprintf(fid,'%g\t',A(ii,:));
    
fprintf(fid,'\n');
end
fclose
(fid

با اجرای کد متلب بالا، اطلاعات ماتریس A در فایلی با نام myFile.txt ذخیره می شود.

بسیار تشکر میکنم از پاسختان
من کدهای بالا را اجرا کردم نتیجه هم داد
فقط چطوری بجای ماتریس, اون عکس مورد نظرم را داخل اون کدهای که نوشتین ببرم تا عملیات برروی اون انجام بگیره و عکس موردنظر بصوریت عکس باینری در اون myfile.txt ذخیره بشه؟
در کلید زیر، دو روش برای وارد کردن اطلاعات یک عکس به درون متلب شرح داده شده است (یکی با کدنویسی و روشی دیگر، بدون استفاده از کد) :

کلید شماره 17

توضیحات کافی بود
من اومد روش دوم را انتخاب کردم ولی جوابی نگرفتم
یعنی بصورت زیر: من یک عکسی به نامpm.jpg دارم که داخل درایو g هست وقتی داخل اون کدی که داده بودین اون ماتریس را حذف میکنم و بجاش این کد را جایگزین میکنم

کد پی‌اچ‌پی:
imread('g:\pm.jpg'

یعنی کدی که run میکنم اینجوریه:

کد پی‌اچ‌پی:
clear all
close all
clc

imread('g:\pm.jpg');  % Write this to file.
fid fopen('myFile.txt','wt');
for 
ii 1:size(A,1)
    
fprintf(fid,'%g\t',A(ii,:));
    
fprintf(fid,'\n');
end
fclose
(fid

و پس از اجرای کدها یک ماتریسی را در فایل txt نمایش داد که سطرهاو ستون هاش تقریبا نزدیک1000*1000 هست
قسمتی از اون ماتریس را اینجا میزارم

کد پی‌اچ‌پی:
[36 36 36 36 36 36 36 36 36 36 36 36 
36 36 36 36 36 36 36 36 36 36 36 363 


یعنی همه درایه هاش بین عدد 36 تا 249 هست
در حالی که من نمیخوام یک ماتریس داشته باشم بلکه همون عکس باینری را میخوام تو اون فایل txt بصورت نقطه نقطه ذخیره کنم
ابتدا توجه داشته باشید که وقتی عکس را به درون متلب وارد می کنید، لزوما یک ماتریس دو بعدی ساخته نمی شود (بستگی به فرمت عکس دارد)، بلکه ممکن است مثلا ماتریس سه بعدی باشد و آن مثال نوشتن در فایل را هم بنده برای ماتریس دو بعدی شرح دادم. در این مورد، فکر می کنم خواندن کلید زیر مفهوم آن را به خوبی شرح بدهد :

کلید شماره 2315

اما در مورد این مسئله که گفتید پیکسل عکس در فایل txt ذخیره شود، دقیقا منظورتون رو متوجه نمی شم. ما در فایل متنی، تنها می توانیم متن را ذخیره کنیم و برای موارد گرافیکی، باید کد معادل آنها (کد معادل رنگ هر پیکسل) که به صورت متن است را در فایل متنی ذخیره کنیم. بعدا نرم افزارهای خاصلی (مثل همین متلب)، فایل را می خوانند و کدها را به رنگ معادلشان تبدیل می کنند و عکس ساخته شده از آنها را به کاربر نمایش می دهند (روش ذخیره سازی عکس همین است، فقط برای فرمت های مختلف، ساختارهای متفاوتی از ذخیره سازی به کار می رود).

سلام
ابتدا تشکر میکنم  از توضیحاتتون
شاید این کاری که من میخوام نشه با متلب انجام داد یا اینکه منظورم را بد میرسونم بهتون
با اینکه گفتین در فایل txt فقط میشود فایل متنی ذخیره کرد قبول میکنم
ولی بعد از اینکه عکس مورد نظرمون  تبدیل به فرمت باینری میشه دیگه از حالت گرافیکی خارج میشه و بصورت نقطه نقطه میشه که بنظر من و تا اون حدی که من میدونم امکان داره که اون را در فایل txt ذخیره کرد
ولی حالا من سوالم را اینجوری می پرسم شاید متوجه  شدین منظورم را ایا این عکس را میشه با فرمت txt با متلب ذخیره کنیم؟
بصورتی که اصلا هیچ ماتریسی ایجاد نشه و فقط این عکس که بصورت نقطه نقطه هست را ایجاد کنه[attachment=684]
این کاری که میخوام انجام دهم یک پروزه درسی نیست فقط با دوستم به این فکر افتادیم که ایا میشه همچین کاری با متلب انجام داد یا نه؟؟
 
که با این کار کلی مطالب را در خصوص پردازش یک تصویر با متلب از شما یاد گرفتیم
 

 
 با عرض سلام و خسته نباشيد
من ميخوام يه برنامه با متلب بنويسم كه يه عكس رو به عنوان ورودي بگيره و بتونه رنگ هاي داخل عكس رو به صورت تفكيك شده نشان بده نهايتا 5 تا رنگ. يعني نشان بده چند درصد مثلا زرد چند درصد قرمز و .... اگه منو راهنمايي كنيد ممنون ميشم.
با عرض سلام و خسته نباشيد
من ميخوام يه برنامه با متلب بنويسم كه يه عكس رو به عنوان ورودي بگيره و چند رنگ داخل عكس رو به صورت تفكيك شده نشان بده يعني مشخص كنه چند درصد رنگ زرد، چند درصد قرمز و ... نهايتا 5 رنگ. ممنون ميشم راهنماييم كنيد.