update noisepictures
This commit is contained in:
80
Modules/noisepictures.f90
Normal file
80
Modules/noisepictures.f90
Normal file
@@ -0,0 +1,80 @@
|
||||
module noisepictures
|
||||
use pixrgb
|
||||
implicit none
|
||||
|
||||
contains ! a lot of garbage ?
|
||||
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine noise_gray8_pic(pict, nbre)
|
||||
implicit none
|
||||
integer, dimension(:,:), intent(inout) :: pict
|
||||
integer, intent(in) :: nbre
|
||||
integer :: quux, ix, iy, width, height
|
||||
|
||||
width = ubound(pict, 1) ; height = ubound(pict, 2)
|
||||
|
||||
do quux=1, nbre
|
||||
ix = 1 + mod ( irand(), width )
|
||||
iy = 1 + mod ( irand(), height )
|
||||
pict(ix, iy) = mod ( irand(), 256 )
|
||||
enddo
|
||||
|
||||
end subroutine
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine noise_gray16_pic(pict, nbre)
|
||||
implicit none
|
||||
integer, dimension(:,:), intent(inout) :: pict
|
||||
integer, intent(in) :: nbre
|
||||
integer :: quux, ix, iy, width, height
|
||||
|
||||
width = ubound(pict, 1) ; height = ubound(pict, 2)
|
||||
|
||||
do quux=1, nbre
|
||||
ix = 1 + mod ( irand(), width )
|
||||
iy = 1 + mod ( irand(), height )
|
||||
pict(ix, iy) = mod ( irand(), 65536 )
|
||||
enddo
|
||||
|
||||
end subroutine
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine noise_rgb8_pic(prgb, nbre)
|
||||
implicit none
|
||||
type(t_pixrgb), dimension(:,:), intent(inout) :: prgb
|
||||
integer, intent(in) :: nbre
|
||||
integer :: quux, ix, iy, width, height
|
||||
|
||||
print *, 'noise_rgb_pic', nbre
|
||||
|
||||
width = ubound(prgb, 1) ; height = ubound(prgb, 2)
|
||||
|
||||
do quux=1, nbre
|
||||
ix = 1 + mod ( irand(), width )
|
||||
iy = 1 + mod ( irand(), height )
|
||||
prgb(ix, iy)%r = mod ( irand(), 256 )
|
||||
prgb(ix, iy)%g = mod ( irand(), 256 )
|
||||
prgb(ix, iy)%b = mod ( irand(), 256 )
|
||||
enddo
|
||||
|
||||
end subroutine
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine noise_rgb16_pic(prgb, nbre)
|
||||
implicit none
|
||||
type(t_pixrgb), dimension(:,:), intent(inout) :: prgb
|
||||
integer, intent(in) :: nbre
|
||||
integer :: quux, ix, iy, width, height
|
||||
|
||||
print *, 'noise_rgb_pic', nbre
|
||||
|
||||
width = ubound(prgb, 1) ; height = ubound(prgb, 2)
|
||||
|
||||
do quux=1, nbre
|
||||
ix = 1 + mod ( irand(), width )
|
||||
iy = 1 + mod ( irand(), height )
|
||||
prgb(ix, iy)%r = mod ( irand(), 65536 )
|
||||
prgb(ix, iy)%g = mod ( irand(), 65536 )
|
||||
prgb(ix, iy)%b = mod ( irand(), 65536 )
|
||||
enddo
|
||||
|
||||
end subroutine
|
||||
!-----------------------------------------------------------------------
|
||||
end module noisepictures
|
||||
@@ -1,21 +1,66 @@
|
||||
program essai
|
||||
|
||||
use mathstuff2
|
||||
use pixrgb
|
||||
use spitpgm
|
||||
use noisepictures
|
||||
implicit none
|
||||
|
||||
integer :: foo, bar
|
||||
real :: quux
|
||||
double precision :: somme
|
||||
|
||||
write(0, *) "----------------- essai -------------------"
|
||||
|
||||
call init_random_seed() ! in module 'mathstuff'
|
||||
somme = 0.0
|
||||
do foo=1, 500
|
||||
quux = rand() + rand()
|
||||
somme = somme + quux
|
||||
bar = mod(irand(), 7)
|
||||
print *, foo, quux, somme/foo, bar
|
||||
enddo
|
||||
call test_noisepictures_rgb()
|
||||
call test_noisepictures_gray()
|
||||
|
||||
contains
|
||||
!-----------------------------------------------------------------------
|
||||
|
||||
subroutine test_noisepictures_rgb ()
|
||||
implicit none
|
||||
|
||||
type(t_pixrgb), allocatable :: pix (:,:)
|
||||
integer :: nombre
|
||||
print *, '------ test des noisepictures RGB'
|
||||
|
||||
allocate(pix(800, 600))
|
||||
nombre = (800*600)/4
|
||||
|
||||
call rgbpix_set_to_rgb(pix, 0, 0, 0)
|
||||
call noise_rgb8_pic(pix, nombre)
|
||||
call rgbpix_spit_as_pnm_8(pix, 'foo8.pnm')
|
||||
|
||||
call rgbpix_set_to_rgb(pix, 0, 0, 0)
|
||||
call noise_rgb16_pic(pix, nombre)
|
||||
call rgbpix_spit_as_pnm_16(pix, 'foo16.pnm')
|
||||
|
||||
deallocate (pix)
|
||||
|
||||
end subroutine
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine test_noisepictures_gray ()
|
||||
implicit none
|
||||
|
||||
integer, allocatable :: pix (:,:)
|
||||
integer :: nombre
|
||||
print *, '------ test des noisepictures GRAY'
|
||||
|
||||
allocate(pix(800, 600))
|
||||
nombre = (800*600)/4
|
||||
|
||||
pix = 0
|
||||
call noise_gray8_pic(pix, nombre)
|
||||
call spit_as_pgm_8(pix, 'bar8.pgm')
|
||||
|
||||
pix = 0
|
||||
call noise_gray16_pic(pix, nombre)
|
||||
call spit_as_pgm_16(pix, 'bar16.pgm')
|
||||
|
||||
deallocate (pix)
|
||||
|
||||
end subroutine
|
||||
|
||||
!-----------------------------------------------------------------------
|
||||
|
||||
end program
|
||||
|
||||
Reference in New Issue
Block a user