วันพุธ, กันยายน ๒๔, ๒๕๕๑

ทำรูปติดบัตรเอง

แทนที่จะถ่าย รูป ติดบัตร ในร้าน ที่คิดโหลดละแพงๆ ร้อยกว่าบาท เราทำเองได้ โดยไม่ต้องเสียสตางค์ โดยใช้ โปรแกรมแต่่งภาพ เช่น Photoshop หรือ GIMP

ตัวอย่างการใช้ Photoshop ทำรูปติดบัตร ดูได้ที่นี่ http://topicstock.pantip.com/woman/topicstock/2008/03/Q6463044/Q6463044.html

แล้วก็ะเห็นว่า ไม่ใช่เีรื่องแปลกเลย ที่จะทำรูปไปอัดเอง ไม่ใช่เรื่องแปลหรือ ผิดศีลธรรมจรรยาแต่อย่างใด มันเป็นการใช้ความสามารถของเรา คอมพิวเตอร์ของเรา ทำให้ได้รูป แบบเดียวกัน แต่ลดราคาลง จาก ร้อยบาท เหลือสองบาท!

มีอีกวิธีคือ มีบริการผ่านเน็ตฯ เหมาะมากสำหรับผู้ที่ต้องการความสะดวกรวดเร็ว แค่อัพโหลดรูป 1 รูป ก็จะได้รูป 4*6 ไปอัดตามขนาดที่เลือกได้ทันที

จะมีขนาดให้เลือก 1 นิ้ว ไปจนถึง 2.5 นิ้ว จำให้เป็นสีเดิม หรือขาวดำ ก็ได้

เข้าใช้ได้ที่ AnyExposure http://anyexposure.com/photo/id.php

วันอาทิตย์, กันยายน ๒๑, ๒๕๕๑

ปัญหา MATLAB

แตงเมล์ code MATLAB มาให้ ปัญหาคือ "เขียนภาพลงไฟล์แล้วมันมืด.. ไม่เหมือนกับที่โชว์ใน  Figure"

โค็ดมีดังนี้

...

figure(5)
subplot(1,2,1),imshow(img)
subplot(1,2,2),imshow(out)
imwrite(uint8(out),'aaa1.jpg')
%---------------------------------------------------------
...

figure(6)
subplot(2,2,1),imshow(img)
subplot(2,2,2),imshow(fmask1)
imwrite(uint8(fmask1),'aaa2filter.jpg')
subplot(2,2,3),imshow(mat2gray(real(out1)))
imwrite(uint8(out),'aaa2.jpg')
...
การแก้ปัญหา
1.  ระบุปัญหา -> ไฟล์ภาพที่ได้ไม่เหมือนกับที่โชว์(ที่ควรจะเป็น)
2. ระบตัวปัญหา -> คำสั่งที่ต้องดูคือ ตอนที่เรา เขียนไฟล์ภาพนั่นเอง ก็คือ บรรทัด
imwrite(uint8(out),'aaa2.jpg')

และ
imwrite(uint8(out),'aaa1.jpg')

3. ทางแก้ปัญหา -> ปัญหาคือ เขียน uint8(out) ลงไฟล์ แล้วมันไม่เหมือนกับ ใน Figure 

สมมติฐาน: เขียนโค๊ดให้มันแสดง กับ เขียนลงไฟล์เป็นข้อมูลต่างชุดกัน

พอลองตรวจดูโค๊ดด้านบน

subplot(1,2,2),imshow(out)

กับ
subplot(2,2,3),imshow(mat2gray(real(out1)))

ก็พบคำตอบ ว่า

ตอนพล๊อตลง Figure, ให้ MATLAB พล๊อต out กับ mat2gray(real(out1)) แต่ พอจะเขียนลงไฟล์ กลับให้มันเขียน uint8(out) ทั้งสองครั้ง

น่าเสียดายที่คอมพิวเตอร์ไม่มีไหวพริบพอที่จะแก้ตรงนี้ให้เรา ซึ่งก็เป็น trade-off กับความตรงไปตรงมา(คน-ซื่อสัตย์)

4. แก้ัปัญหาซะ -> เขียนโค๊ดใหม่ เป็นดังนี้

...

figure(5)
subplot(1,2,1),imshow(img)
subplot(1,2,2),imshow(out)
imwrite(out,'aaa1.jpg')
%---------------------------------------------------------
...

figure(6)
subplot(2,2,1),imshow(img)
subplot(2,2,2),imshow(fmask1)
imwrite(uint8(fmask1),'aaa2filter.jpg')
subplot(2,2,3),imshow(mat2gray(real(out1)))
imwrite(mat2gray(real(out1)),'aaa2.jpg')
...
นิทานเรื่องนี้สอนให้รู้ว่า

คอมพิวเตอร์ไม่ฉลาด และถ้าใช้อะไรที่ฉลาดมาแก้ปัญหาให้เรา ก็จะโดนโกง(ท่อนหลังไม่เกี่ยวกับ MATLAB)




วันพฤหัสบดี, กันยายน ๑๘, ๒๕๕๑

Comment หลายบรรทัด ใน MATLAB

Comment ใน MATLAB ใช้

%
Comment หลายบรรทัด ใน MATLAB

ทำอย่างนี้

เปิด Comment

%{

ปิด Comment

%}

ตัวอย่าง

proper_img = imresize(proper_acpect_img,[256, 256]); %scale to 256 by 256
%imshow(proper_img);
%% Averaging Filter
%{
img = proper_img;
%Step 2: Calling an averaging filter
mask = fspecial('average', 3); %filter mask size 3 by 3 pixel 
...
pause
close all
%}