Thursday, April 30, 2015

Kumpulan E-book Python


Kamu ingin belajar bahasa functional yang keren dan powerfull yaitu python!
Penulis akan memberikan link berikut:
http://musaamin.web.id/ebook-belajar-pemrograman-python-dasar/
https://dl.dropboxusercontent.com/u/17443462/ebook/poss%20upi%20press%20-%20python%20dasar%20-%2017.pdf

VB.net does not support unsafe code

Walau sama-sama menggunakan teknologi-platform NET, ternyata ketika penulis sedang mendapatkan kerjaan untuk mengerjakan sebuah operasi kriptografi dan steganografi yang melibatkan beberapa komputasi sampai ketingkat biner, ternyata kendala pada compliance yaitu C# dan VB#. Penulis menjumpai ketika sedang melakukan include code dengan C# (*.dll) untuk digunakan oleh aplikasi berbasis VB#, penulis menjumpai bahwa usafe itu tidak didukung oleh VB#
http://stackoverflow.com/questions/5915874/how-can-i-use-unsafe-code-in-vb-net
http://www.vbforums.com/showthread.php?562397-RESOLVED-How-to-use-unsafe-C-function-in-VB

Setelah mencari referensi kesana-kemari dapat disimpulkan VB.net does not support unsafe code sehingga terpaksa porting ulang. Terkadang ketika penulis telah membuat code di C# kemudian di porting ulang ke VB, pun bisa-bisa menghasilkan output yang berbeda! untuk menjembatani hal tersebut, maka code C# akan dibuat library (*.dll) yang akan digunakan oleh VB#

Referensi Lain

More significantly, C# gives programmers the option of using pointers. Pointers are variables which refer or ‘point’ to specific locations in memory. They are so widely used in C and C++ that many programmers may find it difficult to conceive of programming without them.
The trouble with pointers is that they are inherently unsafe. They make it easy to corrupt memory, overwrite data and crash your applications. C# discourages the use of pointers but doe permit their use within blocks of code marked with the unsafe directive.
Code marked with the unsafe directive is ‘unmanaged’. This means that it is run as native machine code without benefiting from the services of the CLR. The use of pointers may be useful for certain special programming tasks that require the direct manipulation of memory or interaction with COM. In most cases, however, the .NET Framework provides all the services your program requires without having to resort to the hazards of unmanaged code. VB.NET is more restrictive than C# in this respect. It does not permit the use of unsafe code under any circumstances.
Even so, it is not quite true to say that pointers can never be used. VB.NET provides access to pointers using the IntPtr type. This allows a limited range of pointer operations. For example, an IntPtr variable can be used to store a handle to a file or a window.
If you prefer to program in VB.NET but have an occasional need to use pointers, you can, of course, add a C# or even a C++ project to your solution in order to do all the ‘dirty work’.






http://blog.mattmags.com/2005/03/31/choosing-between-c-and-vb-net/

Penulis lebih suka menggunakan C# karena selain case sensitif juga sintaks mirip C/C++, java daripada delphi dan VB#

Monday, April 27, 2015

Buku Pengolahan Citra Digital dengan Python dan OpenCV - Operasi Histogram Equalization


Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id

Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link


kalian bisa lanjut baca lagi di  http://softscients.com/2020/03/30/buku-pengolahan-citra-digital-dengan-python-dan-opencv-operasi-histogram-equalization/





Perbaikan citra atau yang biasa disebut image enhancement adalah proses perbaikan kualitas citra atau gambar dengan cara memanipulasi parameter-parameter citra. dengan adanya perbaikan citra maka ciri-ciri khusus yang terdapat di dalam citra lebih ditajamkan. Salah satu operasi perbaikan citra format grayscale adalah histogram equalizationperataanhistogram. Disadur dari http://angeljohnsy.blogspot.com/2011/04/matlab-code-histogram-equalization.html





 












Terlihat bahwa operasi perataan histogram dapat bekerja dengan baik Buat kamu yang suka mempelajari code nya, penulis membuat code berdasarkan algoritma diatas, tentu menggunakan bahasa functional yaitu python



import cv2
import numpy as np
from  matplotlib import pyplot as plt
#oleh mulkan.ms@gmail.com
#www.softscients.web.id
def perataanHistogram(A):    
    nilai_bin = 255 #angka value pixel maximal!
    A = A+1 #agar terhindari dari pixel bernilai 0
    [frekuensi,value] = np.histogram(A,bins=nilai_bin) #langkah 2
    cumulatif_histogram = frekuensi.cumsum() #langkah 3
    [baris,kolom] = A.shape
    probabilty_frekuensi = np.round((cumulatif_histogram/float(A.size))*nilai_bin) #langkah 4 dan 5
    B = np.empty(A.shape)    
    for i in range(0,baris):
        for j in range(0,kolom):
            B[i,j] = probabilty_frekuensi[A[i,j]-1] #langkah 6
    return B

I = cv2.imread('pohon.bmp')
gray = cv2.cvtColor(I,cv2.COLOR_BGR2GRAY) #ubah ke format gray
hasil = perataanHistogram(gray)
plt.figure('perataan histogram! www.softscients.web.id')
plt.subplot(1,2,1),plt.imshow(gray,cmap='gray'),plt.title('gray')
plt.subplot(1,2,2),plt.imshow(hasil,cmap='gray'),plt.title('perataan histogram')
plt.show() 

Saturday, April 25, 2015

Aplikasi Comic Reader

Jika kamu pernah mendownload sebuah comic! Maka aplikasi ini bisa menjadi topik yang menarik untuk dibuat ulang di sistem operasi IOS, android, atau windows phone agar bisa 1 halaman bisa ditampilkan kedalam beberapa frame!
Penulis menggunakan matlab (karena yang paling mudah sebagai versi demo). Kamu bisa melihat bahwa aplikasi bekerja untuk membaca 1 halaman kemudian di crop menjadi per frame!


 

 

 

 

Download

https://www.dropbox.com/s/ii01yp90eqgwj44/comic%20reader%20-%205%20april%202015%20-%20matlab.rar?dl=0

Saturday, April 18, 2015

Perbedaan Hasil Histogram Equalization cv::equalizeHist dan matlab histeq

Ternyata ada perbedaan hasil antara function Histogram Equalization antara opencv dan matlab seperti berikut
http://stackoverflow.com/questions/25200243/whats-the-difference-between-cvequalizehist-and-matlab-histeq

Saturday, April 11, 2015

Buku Pengolahan Citra Digital dengan Matlab-Code untuk Konversi RGB ke Lab

Sinopsis

Format RGB bisa kita lakukan transformasi kedalam format yang lainnya, salah satu dari tersebut ke format Lab, berikut penulis sajikan code yang dicomot dari https://www.eecs.berkeley.edu/ dalam bentuk code di matlab atau juga bisa menggunakan calculator online di http://colormine.org/convert/rgb-to-lab

function [L,a,b] = RGB2Lab(R,G,B)
% function [L, a, b] = RGB2Lab(R, G, B)
% RGB2Lab takes matrices corresponding to Red, Green, and Blue, and 
% transforms them into CIELab.  This transform is based on ITU-R 
% Recommendation  BT.709 using the D65 white point reference.
% The error in transforming RGB -> Lab -> RGB is approximately
% 10^-5.  RGB values can be either between 0 and 1 or between 0 and 255.  
% By Mark Ruzon from C code by Yossi Rubner, 23 September 1997.
% Updated for MATLAB 5 28 January 1998.

if (nargin == 1)
  B = double(R(:,:,3));
  G = double(R(:,:,2));
  R = double(R(:,:,1));
end

if ((max(max(R)) > 1.0) | (max(max(G)) > 1.0) | (max(max(B)) > 1.0))
  R = R/255;
  G = G/255;
  B = B/255;
end

[M, N] = size(R);
s = M*N;

% Set a threshold
T = 0.008856;

RGB = [reshape(R,1,s); reshape(G,1,s); reshape(B,1,s)];

% RGB to XYZ
MAT = [0.412453 0.357580 0.180423;
       0.212671 0.715160 0.072169;
       0.019334 0.119193 0.950227];
XYZ = MAT * RGB;

X = XYZ(1,:) / 0.950456;
Y = XYZ(2,:);
Z = XYZ(3,:) / 1.088754;

XT = X > T;
YT = Y > T;
ZT = Z > T;

fX = XT .* X.^(1/3) + (~XT) .* (7.787 .* X + 16/116);

% Compute L
Y3 = Y.^(1/3); 
fY = YT .* Y3 + (~YT) .* (7.787 .* Y + 16/116);
L  = YT .* (116 * Y3 - 16.0) + (~YT) .* (903.3 * Y);

fZ = ZT .* Z.^(1/3) + (~ZT) .* (7.787 .* Z + 16/116);

% Compute a and b
a = 500 * (fX - fY);
b = 200 * (fY - fZ);

L = reshape(L, M, N);
a = reshape(a, M, N);
b = reshape(b, M, N);

if ((nargout == 1) | (nargout == 0))
  L = cat(3,L,a,b);
end

       
 

Code diatas diambil dari link https://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/code/Util/RGB2Lab.m Penjelasan mengenai Lab pada link http://www.colourphil.co.uk/lab_lch_colour_space.shtml

Saturday, April 4, 2015

Cara Menghilangkan Inner Object

Penulis menjumpai sebuah kasus berikut yaitu masalah inner object, untuk mempermudah bahasan masalah, maka kamu lihat analogi berikut
[1] box
[2] box
[3] inner box
[4] box