Introduction About Site Map

XML
RSS 2 Feed RSS 2 Feed
Navigation

Main Page | Blog Index

Archive for November, 2010

TechBytes’ Episode 11 on Microsoft FUD

TechBytes

Direct download as Ogg (2:03:17, 37.1 MB) | Direct download as MP3 (56.4 MB)

Summary: Second episode discussing Microsoft’s perception tactics against GNU/Linux with a plethora of other topics around this theme

THIS is the second part of a discussion about ways in which GNU/Linux adoption is being discouraged, with or without Microsoft’s direct involvement. Gordon, Tim, and Roy speaks about no article in particular this weekend; instead they concentrate on many examples from the past few years. Tim’s site, OpenBytes, will publish some some show notes very shortly. We made no preparations for the shows, so notes are put together only after the discussion.

RSS 64x64Today’s show ends with “SPARKLE” by Honey Sac (published in SXSW 2009 Showcasing Artists). Marti is working on a new intro for the show and we also hope to have him — as well folks from Mageia — on an imminent episode. We hope you will join us for future shows and spread the word if you enjoy this show. Also consider subscribing to the show via the RSS feed. If you have an Identi.ca account, consider subscribing to TechBytes in order to keep up to date.

As embedded (HTML5):

Download:

Ogg Theora
(There is also an MP3 version)

Adobe Trash (Flash) in Fedora 14, the Free Software Way (Gnash)

Summary: An era of Flash barriers is coming to an end, but Techrights is looking for free/libre VoIP/SIP recording software

A

dobe Trash (Flash) is dirt on the World Wide Web. It hinders access to data not just by humans but also by bots. Nevertheless, there are few Web sites that still depend on Flash and require the user/visitor to install it. One site that used to require it for most data (video) was YouTube, but this major site is moving to WebM, which may make Flash and its substitutes a lot less necessary (along with codecs that are not simple to obtain, at least in Fedora). Google can be expected to transcode all of its videos and make them available as WebM within weeks or just a few months. For other Web sites, Gnash, the free/libre alternative, seems to be sufficient and it is simple to install either from the package manager (e.g. KPackageKit) or the universal environment, which is the command line. The package managers vary, but the package names are usually the same (just replace yum with apt-get for example). In Fedora 14, the following commands do the job for Gnash support in Konqueror.

[roy@blueberry ~]$ su
Password: 
[root@blueberry roy]# yum install gnash-klash
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package gnash-klash.i686 1:0.8.8-4.fc14 set to be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================
 Package                   Arch               Version                       Repository            Size
=======================================================================================================
Installing:
 gnash-klash               i686               1:0.8.8-4.fc14                fedora               177 k

Transaction Summary
=======================================================================================================
Install       1 Package(s)

Total download size: 177 k
Installed size: 541 k
Is this ok [y/N]: y
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 177 k
gnash-klash-0.8.8-4.fc14.i686.rpm                                               | 177 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : 1:gnash-klash-0.8.8-4.fc14.i686                                                 1/1 

Installed:
  gnash-klash.i686 1:0.8.8-4.fc14                                                                      

Complete!
[root@blueberry roy]#  yum install gnash
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
Existing lock /var/run/yum.pid: another copy is running as pid 31528.
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: PackageKit
    Memory :  47 M RSS ( 63 MB VSZ)
    Started: Sun Nov 21 12:28:38 2010 - 00:06 ago
    State  : Sleeping, pid: 31528
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: PackageKit
    Memory :  47 M RSS ( 63 MB VSZ)
    Started: Sun Nov 21 12:28:38 2010 - 00:08 ago
    State  : Sleeping, pid: 31528
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: PackageKit
    Memory :  47 M RSS ( 63 MB VSZ)
    Started: Sun Nov 21 12:28:38 2010 - 00:10 ago
    State  : Sleeping, pid: 31528
Setting up Install Process
Package 1:gnash-0.8.8-4.fc14.i686 already installed and latest version
Nothing to do

Or the short story:

yum install gnash-plugin 
yum install gnash-klash 
yum install gnash
 

In Ubuntu I’ve had less luck with Gnash, which was harder to successfully install and register with the Web browser. On the other hand, Fedora has some other drawbacks that are not its fault (e.g., from today [1, 2]). The bottom line though, as far as Flash content is concerned, things have improved greatly over the years. Not only is there a free substitute for Flash but Flash content itself is dying due to HTML5 (yes, some sites dump Flash in favour of HTML) and free codecs/formats such as Ogg and WebM. This opening up of the Web is further supported by the death of Silverlight and the realisation that mobile devices require access too.

As people who hang out in IRC may already know, Techrights depends on proprietary software only as far as recording is concerned because a VoIP recorder for 2 or more people simultaneously is something that we are still unable to achieve in Ekiga. Any suggestions regarding a free/libre replacement would be appreciated. Having got rid of all dependencies on proprietary software at my job (MATLAB has been the only such dependency for many years), it would be nice to make Techrights not dependent on Skype (for TechBytes) and the FSF too recognises that replacements in VoIP are a “high priority” issue.

Grids and Tagging – Octave Code Samples

Objects collection - stethoscope

FOR a little bit of background on tagging and my current work, see my previous posts on the subject [1, 2, 3], prior to me getting data from Professor Axel. The goal is to advance existing methods that include tagging by applying to them an algorithm which I developed for non-rigid registration assessment in the brain. This time the data that I deal with is cardiac, so temporal sets are a far more complicated problem, particularly due to persistent motion. Of interest there’s the paper “Single Heartbeat Cardiac Tagging for the Evaluation of Transient Phenomena” from Daniel A. Herzka, J. Andrew Derbyshire, Peter Kellman, and Elliot R. McVeigh. It can be found in Magnetic Resonance in Medicine (Volume 54, Issue 6, pages 1455–1464, December 2005) and the full paper says in its abstract: “Many cardiac abnormalities are of a transient nature, creating a beat-to-beat variation in myocardial function. This work presents the cardiac imaging technique for the measurement of regional function during transient cardiac phenomena. All information necessary for the reconstruction of a cine loop is acquired within a single heartbeat, avoiding the temporal blurring introduced by segmented imaging due to the assumption of cardiac cycle periodicity…”

I shall assume that motion can be treated like changes that occur over time on different dates or across subjects. The part in the above paper which deals with tags is: “Images reconstructed from such data displayed tag blurring and reduced tag persistence due to motion and interheartbeat variability. Images acquired during the Valsalva maneuver demonstrated apparent beat-to-beat variability, visible both in the images and as changing strain patterns and ventricular volumes.”

Therein lies a real problem because the tags cannot be assured to exist where they are needed the most. Fortunately, the literature contains many examples of work that can reconstruct imaged objects based on spatial information other than the tags themselves. A paper which was cited a lot in the 90s comes from Young and Axel (published in 1992, but date of current version is 6th of August 2002) and it is titled “Non-rigid heart wall motion using MR tagging”. Prior to it, in 1988, E A Zerhouni, D M Parish, W J Rogers, A Yang, and E P Shapiro looked at ways of analysing myocardial motion, potentially in troubled patients. Their paper “Human heart: tagging with MR imaging–a method for noninvasive assessment of myocardial motion” is summarised thusly:

Specified regions of the myocardium can be labeled in magnetic resonance (MR) imaging to serve as markers during contraction. The technique is based on locally perturbing the magnetization of the myocardium with selective radio-frequency (RF) saturation of multiple, thin tag planes during diastole followed by conventional, orthogonal-plane imaging during systole. The technique was implemented on a 0.38-T imager and tested on phantoms and volunteers. In humans, tags could be seen 60-450 msec after RF saturation, thus permitting sampling of the entire contractile phase of the cardiac cycle. Tagged regions appear as hypointense stripes, and their patterns of displacement reflect intervening cardiac motion. In addition to simple translation and rotation, complex motions such as cardiac twist can be demonstrated. The effects of RF pulse angle, relaxation times, and heart rate on depiction of the tagged region are discussed.

The German Heart Institute Berlin published the paper “Magnetic resonance stress tagging in ischemic heart disease” many years later (2005) and they used a 1.5-Tesla scanner for probing patients with coronary artery disease (CAD) under high-dose dobutamine stress. This clinical study helped show how “quantitative myocardial tagging may become a tool that reduces the need for high-dose dobutamine stress.”

As stated in previous posts and short papers which will be uploaded at a later date, my intention is to consider stress/strain analysis applied to the imaged tags. It is the tracking of the tags and making use of them that’s very challenging around boundaries that move throughout the cardiac cycle. Identifying templates like a cross where the tags have an intersection is a computationally expensive process that may also require taking uncertainty into account. If the goal is to track tags in real-time-level speeds (like in some ultrasound packages), then a faster approach is needed, e.g. shuffle distance. This approach would involve comparing different frames (at least one prior frame, with the exception of the first which has no predecessors) and then, in the junctions of the tags, best matches will be found and recorded in a vector of {x,y} coordinates, where these coordinates are refined over time and help quickly determine the motion of objects inside the image. Calculations using mechanical models (based upon shapes that the tags form) are an area which is already well explored, so it is the tracking and recovery of tags which my code deals with first and foremost. prototyping is done in GNU Octave, which helps make a visual proof of concept on arbitrary data, either synthetic or real. The code below does not yet do much, but once it’s finalised the code will be published properly.

Octave functions of relevance (still experimental and the GPLv3-licensed BioSig project may be required, as noted here):

function [new_image] = getdicomimages(directory, threshold)
% GETDICOMIMAGES: Open and test DICOM images of the heart
%
%    Licensing
%
%      GNU GPL version 3
%
%    GENERAL
%
%      Script - experimental, for handling MRI images with biosig
%
%    INPUT/S
%
%      -Omitted
%
%    OUTPUT/S
%
%      -Omitted
%
%    PENDING WORK
%
%      -
%
%    KNOWN BUG/S
%
%      -None.
%
%    COMMENT/S
%
%      -
%
%    RELATED FUNCTION/S
%
%      
%
%    ABOUT
%
%      -Created:     November 2010
%      -Last update: November 5th, 2010
%      -Revision:    0.0.1
%      -Author:      Dr. R. S. Schestowitz
% ==============================================================

%// addpath ("/home/roy/Main/IT/Programs/get_dicom_heart")
%// addpath ("/home/roy/Main/IT/Programs/biosig4octmat-2.50/biosig/t200_FileAccess")
%// img = opendicom("~/Main/IT/Programs/MR-Cardiac/i148713.MRDC.1");  // deprecated function
%// sopen("~/Main/IT/Programs/MR-Cardiac/Full-CD/DICOM/ST000000/SE000019/MR000000");
%// img(i)=imread('sombrero.jpg')
%// plot(img.T0)   //metadata attributes
%// ~/Main/IT/Programs/dicom2/dicom2 ~/Main/IT/Programs/MR-Cardiac/Full-CD/DICOM/ST000000/SE000014/*

cd(directory);
files_list=ls('*.tga');
n_images=size(files_list,1);
% BIOSIG open function, wrapper to DICOM handler:
% img = sopen("~/Main/IT/Programs/MR-Cardiac/i148713.MRDC.1");
for i=1:1:n_images,
	% files_list
	%// img_metadata(i) = sopen(files_list(i,:))
	%a=imread(files_list(i,:));
	%imshow(a)
	figure;
	img(:,:,i)=imread(files_list(i,:));
	imshow(img(:,:,i))
end

For actual testing:

function [new_image] = loadtaggedsequence(directory, threshold, draw_grid)
% LOADTAGGEDSQUENCE: Open and test tagged images of the heart
%
%    Licensing
%
%      GNU GPL version 3
%
%    GENERAL
%
%      Script
%
%    INPUT/S
%
%      -Omitted
%
%    OUTPUT/S
%
%      -directory: location of images,
%	 -threshold: colour of tags/markers based on conrtast of image
%      -draw_grid: boolean for display of manual grid/points (drawing or not drawing)
%
%    PENDING WORK
%
%      -
%
%    KNOWN BUG/S
%
%      -None.
%
%    COMMENT/S
%
%      -
%
%    RELATED FUNCTION/S
%
%      
%
%    ABOUT
%
%      -Created:     November 2010
%      -Last update: November 10th, 2010
%      -Revision:    0.0.1
%      -Author:      Dr. R. S. Schestowitz
% ==============================================================

% common commands

	%// loadtaggedsequence('~/Main/IT/Programs/MR-Cardiac/Zhen-thesis',1,1)
	%// addpath ("/home/roy/Main/IT/Programs/get_dicom_heart")
	%// addpath (genpath("/home/roy/Main/IT/Programs/biosig4octmat-2.50/biosig/"))
	%// path
	%// img = opendicom("~/Main/IT/Programs/MR-Cardiac/i148713.MRDC.1");  // deprecated function
	%// sopen("~/Main/IT/Programs/MR-Cardiac/Full-CD/DICOM/ST000000/SE000019/MR000000");
	%// img(i)=imread('sombrero.jpg')
	%// plot(img.T0)   //metadata attributes
	%// ~/Main/IT/Programs/dicom2/dicom2 ~/Main/IT/Programs/MR-Cardiac/Full-CD/DICOM/ST000000/SE000014/*

% experimental options

draw_circles=0;

% grid parameters

x_start = 10;
y_start = 10;
step_x = 30;
step_y = 20;
x_max = 110;
y_max = 80;


frame_size=8;
shuffle_radius=3;
 
% initialisation

first_image=1;
old_boundaries=[[0,0];[0,0]];

% get data

cd(directory);
files_list=ls('*.png');
	% files_list=ls('*.gif');
	% One image: files_list=('seq-tag-1.png');

% Opening [print filenames if necessary]

files_list
n_images=size(files_list,1);

% main loop

	% img = sopen("~/Main/IT/Programs/MR-Cardiac/i148713.MRDC.1");
for i=1:1:n_images,
		%// img_metadata(i) = sopen(files_list(i,:))
		%a=imread(files_list(i,:));
		%imshow(a)
	figure;
	%img(:,:,i)=imread(files_list(i,:));
	
	if (draw_grid==1)
		for j=x_start:step_x:x_max,
	   	  img(j,:,i)=0;
		end
		for j=y_start:step_y:y_max,
	   	  img(:,j,i)=0;
		end
	end
	if (draw_circles==1)
	     % [center,radius]=sphfit([10,11,0],[5,5,0]);	
        end
	boundaries=[[x_start,y_start];[x_start,y_start+step_y]; ...
	[x_start,y_start+step_y*2]; [x_start,y_start]; ...
	[x_start+step_x,y_start];[x_start+step_x*2,y_start]; ...
	[x_start+step_x*2,y_start+step_y];[x_start+step_x*2,y_start+step_y*2]; ...
	[x_start+step_x,y_start+step_y];[x_start+step_x,y_start+step_y*2]];
	%%	boundaries_x=[;    %% deprecated - no more xy separation
        	for l=1:1:size(boundaries,1)
        	%%	for k=1:1:size(boundaries,2)
        		% debugging
        		%	boundaries_y(k,1);
        		%	boundaries_y(2,l);
                     	% img(1,3,1)=1;
                     	% boundaries_y(k,1)
                     	% boundaries_y(2,l)
                     	%i
                     	%k
                     	%l
                     	% size(boundaries_y,1)
                     		if (first_image==0)
                     			%old_boundaries
                     	    		new_dot_x=old_boundaries(l,1)+1;
                     	    		new_dot_y=old_boundaries(l,2)+1;
                     	    			%old_boundaries(l,1)-8
                     	    		search_frame_current=img(((new_dot_x-frame_size):(new_dot_x+frame_size)),((new_dot_y-frame_size):(new_dot_y+frame_size))) 
                     	    		search_frame_previous=img(((old_boundaries(l,1)-frame_size):(old_boundaries(l,1)+frame_size)),((old_boundaries(l,2)-frame_size):(old_boundaries(l,2)+frame_size))) 
                     	    		shuffle_diff=shuffle_transform(search_frame_current, search_frame_previous, shuffle_radius)
                     	    		
                     	    		img(new_dot_x,new_dot_y,i)=threshold/255;
                     	    		old_boundaries(l,1)=new_dot_x;
                     	    		old_boundaries(l,2)=new_dot_y;
                     		else
                     	    		img(boundaries(l,1),boundaries(l,2),i)=(255-threshold)/255;
                     		end
                    %% 	end	
        	end
        	%for l=1:1:size(boundaries_x,1)
        		%for k=1:1:size(boundaries_x,2)
                     	   %img(boundaries_x(k,2),boundaries_x(l,1),i)=250;
                	%end
        	%end
	imshow(img(:,:,i))
		% plot3(img(:,:,i))
        if (first_image==1)
	   old_boundaries=boundaries;
	end
        first_image=0;
end

Peripheral transform:

function [value,shuffle] = shuffle_transform(image,im2,radius)
% SHUFFLE_TRANSFORM: A shuffle transform based on an implementation by Steve Marsland
%
%    Licensing
%
%      -
%
%    GENERAL
%
%      Function
%
%    INPUT/S
%
%      -image: first image
%      -im2: second image
%      -radius: the shuffle radius
%
%    OUTPUT/S
%
%      -Omitted
%
%    PENDING WORK
%
%      -
%
%    KNOWN BUG/S
%
%      -None.
%
%    COMMENT/S
%
%      -
%
%    RELATED FUNCTION/S
%
%      
%
%    ABOUT
%
%      -Created:     November 2010
%      -Last update: November 21st, 2010
%      -Revision:    0.0.1
%      -Author:      Dr. R. S. Schestowitz
% ==============================================================

shuffle = zeros(size(image));

for i=radius+1:size(image,1)-radius
    for j=radius+1:size(image,2)-radius
        template = im2(i-radius:i+radius,j-radius:j+radius);
        diff = abs(template-image(i,j));        
        shuffle(i,j) = min(diff(:));
    end
end
value = mean(shuffle(:))

Fedora Wishlist Feature: Old Versions

As indicated in the previous post, sometimes it is necessary to use old versions of a particular package which is not available from the repositories. The screenshot below shows what’s available in Fedora as far as Octave is concerned.

Octave package - small

It would be extremely valuable to have links to alternative repositories or even Web sites that offer previous builds of the software, even if these are not “official” and thus less safe. It is not ideal for many different reasons, but it can prevent people from searching the Web for other RPMs that come from entirely untrusted sources.

Fedora is not the problem here, but a constructive suggestion such as this one may become a selling point to some users.

GraphicsMagick-1.3.8: GNU Octave in Fedora and Ubuntu

I‘ve been an Octave user on several machines and everything worked perfectly well until Fedora 14, which has a newer version of the software and thus a serious conflict of incompatible libraries. For many image loaders the following type of error is shown just before Octave crashes:

octave: magick/semaphore.c:525: LockSemaphoreInfo: Assertion `semaphore_info !=
 (SemaphoreInfo *) ((void *)0)' failed.
panic: Aborted -- stopping myself...

Do not waste time trying to find a bug in the code of an Octave program. It is a known issue that GraphicsMagick and Octave are having this year.

Somebody posted debugging information and John W. Eaton responded with a link to this thread from January. The best solution is probably to escape to previous versions for the time being.

TechBytes Special on Microsoft Aggression, Lies

TechBytes

Direct download as Ogg (1:10:22, 20.5 MB) | Direct download as MP3 (32.2 MB)

Summary: First episode of its kind discussing just one particular topic rather than general news; the show accumulates many examples where Microsoft attacks GNU/Linux

THIS is our tenth episode which is also a special one because we introduce one discussion topic rather than a news roundup. Our regular-to-be Gordon — along with Tim and Roy — speaks about this story of FUD (fear, uncertainty and doubt). They go through some past stories where Microsoft is caught spreading FUD or derailing GNU/Linux adoption. As the show is in no way scripted, the discussion is not complete, but many different areas get covered. Tim’s site, OpenBytes, will publish some overview very soon.

RSS 64x64Today’s show ends with “The Pretty Pride Of Russia” by Tom Hickox (published in SXSW 2009 Showcasing Artists). We hope you will join us for future shows and spread the word if you enjoy this show. Also consider subscribing to the show via the RSS feed. If you have an Identi.ca account, consider subscribing to TechBytes in order to keep up to date.

As embedded (HTML5):

Download:

Ogg Theora
(There is also an MP3 version)

Gordon Sinclair Joins TechBytes

TechBytes

Direct download as Ogg (1:42:33, 30.8 MB) | Direct download as MP3 (46.9 MB)

Summary: Another show with Gordon Sinclair may be the first among many where he is a regular

THIS is our ninth episode. Gordon, Tim, and Roy speak about news from the past two days (everything that matters since the previous show). This show mostly focuses on GNU/Linux, it hardly mentions Apple at all, and Microsoft is secondary at best. Tim’s site, OpenBytes, will soon publish some show notes (we put the audio out there as soon as possible while the news covered is still fresh). We have finally found a way to structure the show such that it covers everything which needs to be covered rather exhaustively.

RSS 64x64Today’s show ends with “A Violent Yet Flammable World” by Au Revoir Simone (published in SXSW 2009 Showcasing Artists). We hope you will join us for future shows and spread the word if you enjoy this show. Also consider subscribing to the show via the RSS feed. If you have an Identi.ca account, consider subscribing to TechBytes in order to keep up to date.

As embedded (HTML5):

Download:

Ogg Theora
(There is also an MP3 version)

Retrieval statistics: 19 queries taking a total of 0.172 seconds • Please report low bandwidth using the feedback form
Original styles created by Ian Main (all acknowledgements) • PHP scripts and styles later modified by Roy Schestowitz • Help yourself to a GPL'd copy
|— Proudly powered by W o r d P r e s s — based on a heavily-hacked version 1.2.1 (Mingus) installation —|