Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Which is the best software for Image Processing

Status
Not open for further replies.

Jigar 4 Electronics

Full Member level 5
Joined
Apr 28, 2011
Messages
313
Helped
40
Reputation
82
Reaction score
38
Trophy points
1,318
Location
Hamilton, ON, Canada
Activity points
3,390
Hello,
I am looking for best software for Image processing.
Can anyone suggest me such software please ?
I know about Matlab but it's slow for the implementation.
 

Mostafa.A

Newbie level 6
Joined
Mar 24, 2012
Messages
11
Helped
4
Reputation
10
Reaction score
4
Trophy points
1,283
Activity points
1,372
I get it from my friends.
and attached file, at below link.

but I attached it, too, in this email.

if you like to find 0.18um models from this file, do as below
open "mm018.l" by notepad. then search for "1.8E-07" in the notepad file.

MATLAB is best to, examine your idea, easily.
but when write a program in MATLAB, you should write your program in some other softwar as C , FORTRAN, ... to be fast.

but in MATLAB, notice some things, to be faster
consider the size of variables before for loop.
try to change "for statement" by, simple statements.
for example:
for i=1:size(b,2)-1, a(2,i) = b(2,i)+b(2,i+1); end can change by
a(2, 1:size(b,2)-1) = b(2,1:end-1)+b(2,2:end); and it work very faster.
 

Jigar 4 Electronics

Full Member level 5
Joined
Apr 28, 2011
Messages
313
Helped
40
Reputation
82
Reaction score
38
Trophy points
1,318
Location
Hamilton, ON, Canada
Activity points
3,390
Thanks for the answer Mostafa,
I get your view but can't understand the example of 'for' loop , can you please explain it in detail :

"" for i=1:size(b,2)-1, a(2,i) = b(2,i)+b(2,i+1); end can change by
a(2, 1:size(b,2)-1) = b(2,1:end-1)+b(2,2:end); and it work very faster. ""
 

Mostafa.A

Newbie level 6
Joined
Mar 24, 2012
Messages
11
Helped
4
Reputation
10
Reaction score
4
Trophy points
1,283
Activity points
1,372
notice I'm poor in English. but I take another example to, can be explain answer.


consider 'A', a 512*512 matrix.
for example: A=imread('lena.tif');

and we like to calculate differences between each two pixels.

the program Can be written as follows

****************************** (1)
clear A B
A=imread('s\lena.tif');
tic
for i=1:512
for j=1:511
B(i,j)=A(i,j+1)-A(i,j);
end
end
toc
****************************** (2)
clear A B
A=imread('s\lena.tif');
tic
B(512,511)=0;
for i=1:512
for j=1:511
B(i,j)=A(i,j+1)-A(i,j);
end
end
toc
****************************** (3)
clear A B
A=imread('s\lena.tif');
tic
B=A:),2:512)-A:),1:511);
toc
****************************** (4)
clear A B
A=imread('s\lena.tif');
tic
B(512,511)=0;
B=A:),2:512)-A:),1:511);
toc
****************************** (5)
clear A B
A=imread('s\lena.tif');
tic
B(512,511)=0;
B:),:)=A:),2:512)-A:),1:511);
toc
***********************************************************
***********************************************************

results (amount time, program need)

(1) Elapsed time is 0.072111 seconds.
(2) Elapsed time is 0.011675 seconds.
(3) Elapsed time is 0.001771 seconds.
(4) Elapsed time is 0.002383 seconds.
(5) Elapsed time is 0.005198 seconds.

Experiment Result
(2) is faster (1), because we consider the size of B at the first.
(3) is fastest, because we don't use 'for' loop.
(4) & (5) is not better, because we don't need to consider size of B.
but why, we get this results.

at the (1), when 'i' & 'j' increment, size of 'B is increment too. and MATLAB should find the new memory for 'B' and assign it too 'B', and then change 'B'. communicate to memory, is very slower.
at the (3), is faster, because the 'for' loop in "MATLAB" is slower than "C" , "FORTRAN".
at the (4), the "B(512,511)=0;" statement isn't useful. because at the "B=A:),2:512)-A:),1:511);" statement, MATLAB clear "B" and then create "B" and assign result.
and at the (5), MATLAB one time, need to create "B" and set all memory of it to zero. and then need to change all elements of "B", to can assign the result.
 
Last edited:
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top